我创建了一个这样的词典列表:
list = []
for i in xrange(4):
list.append({})
list[i]['a'] = False
过了一段时间,我想(使用一行代码)看看是否有任何'a'值是真的。
我试过了:
anyTrue = True in list # always returns false
anyTrue = True in list[:]['a']
有这么方便的方法吗?
谢谢!
答案 0 :(得分:2)
将any
与generator expression一起使用:
>>> lst = []
>>>
>>> for i in xrange(4):
... lst.append({})
... lst[i]['a'] = False
...
>>> any(d['a'] for d in lst)
False
>>> lst[1]['a'] = True
>>> any(d['a'] for d in lst)
True
顺便说一句,不要将list
用作变量名。它影响内置函数/类型list
。
答案 1 :(得分:1)
您可以使用any
和generator expression:
if any(x['a'] for x in list):
# Do stuff
参见下面的演示:
>>> lst = []
>>> for i in xrange(4):
... lst.append({})
... lst[i]['a'] = False
...
>>> any(x['a'] for x in lst)
False
>>> lst[2]['a'] = True # Set an 'a' value to True
>>> any(x['a'] for x in lst)
True
>>>
此外,您应该避免命名变量list
。这样做会掩盖内置功能。</ p>