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

2024-10-04 01:32:09 发布

您现在位置: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']

有这么方便的方法吗

谢谢


Tags: 方法代码infalsetrue列表for字典
2条回答

^{}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作为变量名。它隐藏了内置函数/类型^{}

可以使用^{}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。这样做会使内置的功能黯然失色

相关问题 更多 >