词典列表中是否存在真值?

时间:2014-05-23 15:02:22

标签: python

我创建了一个这样的词典列表:

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']

有这么方便的方法吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

anygenerator 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)

您可以使用anygenerator 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>