Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在字典中计算布尔值_Python_Dictionary - Fatal编程技术网

Python 在字典中计算布尔值

Python 在字典中计算布尔值,python,dictionary,Python,Dictionary,我有一个python dictionary对象,每个键都包含一个布尔值,例如: d = {'client1': True, 'client2': False} 计算字典中真值数量的最简单、最简洁的方法是什么?为了清楚起见: num_true = sum(1 for condition in d.values() if condition) 为简洁起见(这是因为True是int的一个子类,值为1): 在Python2.*中,sum(d.itervalues())比许多人建议的sum(d.val

我有一个python dictionary对象,每个键都包含一个布尔值,例如:

d = {'client1': True, 'client2': False}
计算字典中真值数量的最简单、最简洁的方法是什么?

为了清楚起见:

num_true = sum(1 for condition in d.values() if condition)
为简洁起见(这是因为True是int的一个子类,值为1):


在Python
2.*
中,sum(d.itervalues())比许多人建议的sum(d.values())略不简洁(多4个字符;-),但避免了不必要的值列表具体化,因此在处理大型字典时可以节省内存(可能还有时间)

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


因此,不需要使用迂回的
if
子句。

简单而通用,只需知道布尔值在Python中也是整数,特别是0和1(这并不奇怪)。这就是文档的用途:清除,但不像使用
sum()那样清楚
IMO.将在Python 3的
dict.values
返回一个交互式视图而不是列表时停止工作。它怎么不像使用“sum”那样清晰?它的内容是“计算value()中值为True的元素数”;这是问题的直接翻译,而sum()引入了一个概念间接层次。实际上,这比使用true作为数字更为英语化。
a.values().count(True)
sum(d.values())
>>> False==0
True
>>> False+True
1
a.values().count(True)