1

我有一种情况,我正在接收一个 dicts 列表,需要确定该列表是否为空,或者某个值是否存在于可能接收到的任何 dicts 中的特定键:值对中。
例如:

[{"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'}]

我想我现在只是把我的大脑炸了,并且遗漏了一些明显的东西。任何帮助将不胜感激。

4

1 回答 1

2
any(D.get('blah') == '0' for D in L)
于 2015-01-29T01:21:35.530 回答