Python 使用理解查找字典列表中是否有任何(键:值)
Python find if any(key: value) in of list of dicts using comprehension
我遇到这样一种情况,我收到了一个字典列表,需要确定该列表是否为空,或者某个值是否存在于任何可能存在的字典中的特定 key:value 对中收到。
例如:
[{"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
我可以得到很多语法错误:
>>> 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'}]
我想此时我的脑子已经炸了,遗漏了一些明显的东西。任何帮助将不胜感激。
any(D.get('blah') == '0' for D in L)
我遇到这样一种情况,我收到了一个字典列表,需要确定该列表是否为空,或者某个值是否存在于任何可能存在的字典中的特定 key:value 对中收到。
例如:
[{"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
我可以得到很多语法错误:
>>> 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'}]
我想此时我的脑子已经炸了,遗漏了一些明显的东西。任何帮助将不胜感激。
any(D.get('blah') == '0' for D in L)