Python使用理解来查找dicts列表中是否有任何(键:值)

时间:2015-01-29 01:15:45

标签: list python-3.x dictionary list-comprehension dictionary-comprehension

我遇到的情况是我收到了一个dicts列表,需要确定列表是否为空,或者是否在特定键中存在某个值:可以接收的任何dicts中的值对。 /> e.g:

[{"blim": "nancy","blam": "x","blah": "1"}, {"blim": "bob","blam": "a","blah": "1"}, {"blim": "joe","blam": "p","blah": "0"}]

我目前正在使用:

def foo(x, value):
    if not x: return True
    else:
        for y in x:
            if y["blah"] == value: return False
    return True

if foo(my_list, "0"):
    ...do truthy stuff here...

我更喜欢做类似的事情:

if not x or not any y['blah'] == "0" in x:
    ...do truthy stuff here...

我已经阅读了过去2天内我可以找到的关于使用理解和我输入标题时提出的所有建议的所有内容,但是我发现没有任何内容可以解决这个问题。

我可以得到一个漂亮的发电机

for y in x: False if any(y['blah']) == "0" else True

我可以获得大量的SyntaxErrors:

>>> x[y] for x[y]: if (x[y]['blah']=='0') in x
File "<stdin>", line 1
    x[y] for x[y]: if (x[y]['blah']=='0') in x
       ^
SyntaxError: invalid syntax

>>> if (not x) or (y for y: any(y['blah']) in x == '0': print('stuff'))
File "<stdin>", line 1
    if (not x) or (y for y: any(y['blah']) in x == '0': print('stuff'))
                      ^
SyntaxError: invalid syntax

...

我以为我可能会接近:

>>> if not x or any(y['blah']) in x == '0': print('stuff')
...
>>>

但即使我的词典列表只是:

,也没有输出
>>> x
[{'blah', '0'},{'blah', '0'}]

我想我此刻只是在炒我的大脑并且错过了一些明显的东西。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

any(D.get('blah') == '0' for D in L)