在字典中计算布尔值

时间:2009-10-22 15:29:33

标签: python dictionary

我有一个python字典对象,其中包含每个键的布尔值,例如:

d = {'client1': True, 'client2': False}

计算字典中True值数量的最简单,最简洁的方法是什么?

4 个答案:

答案 0 :(得分:22)

为清楚起见:

num_true = sum(1 for condition in d.values() if condition)

为了简洁(这是有效的,因为True是int的子类,值为1):

num_true = sum(d.values())

答案 1 :(得分:3)

sum(d.values())

答案 2 :(得分:2)

a.values().count(True)

答案 3 :(得分:1)

在Python 2.*中,sum(d.itervalues())比许多人提出的sum(d.values())略微简洁(4个字符;-),但避免不必要地实现值列表和所以当你有一个大词典来处理时,可以节省内存(可能还有时间)。

正如一些人所指出的,这很好用,因为bools是int(特别是子类):

>>> False==0
True
>>> False+True
1
因此,不需要通谕if条款。