2010-05-10 50 views
7

对于以下Python字典:聚合Python字典的布尔值的最佳方式是什么?

dict = { 
    'stackoverflow': True, 
    'superuser': False, 
    'serverfault': False, 
    'meta': True, 
} 

我想布尔值以上聚集成以下布尔表达式:

dict['stackoverflow'] and dict['superuser'] and dict['serverfault'] and dict['meta'] 

上面应该返回我False。我使用上面已知名称的密钥,但我希望它可以工作,以便可以有大量未知的密钥名称。

+1

*无限*键数?! – 2010-05-10 21:46:12

+0

@Mark Byers:他不知道字典中会有多少个键,或者他们会是什么,为什么这很难理解? – manifest 2010-05-10 21:49:53

+2

@manifest:好的,那么他的问题就错了,所以我编辑它来纠正它。这是一个Wiki并且可以公开查看。正确的问题与正确的答案同样重要。 – 2010-05-10 21:58:43

回答

23

在Python 2.5+:

all(dict.itervalues()) 
在Python 3+

all(dict.values()) 

dict

是一个糟糕的变量名,但因为它是一个内置式的名称

编辑:为python 3版本添加语法。 values()在python 3中构造一个视图,而不像2.x,它在内存中构建列表。

+0

+1 - 迭代器对内存消耗更好 – 2010-05-10 21:44:52

相关问题