Вопрос

У меня есть объект словаря python, который содержит логическое значение для каждого ключа, например:

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

Какой самый простой и лаконичный способ подсчитать количество истинных значений в словаре?

Это было полезно?

Решение

Для ясности:

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

Для краткости (это работает, потому что True является подклассом int со значением 1):

num_true = sum(d.values())

Другие советы

sum(d.values())
a.values().count(True)

В Python 2.*, sum(d.itervalues()) немного менее лаконичен, чем sum(d.values()) многие предлагают (еще 4 символа;-), но избегают ненужной материализации списка значений и таким образом экономят память (и, возможно, время), когда вам приходится иметь дело с большим словарем.

Как указывали некоторые, это работает нормально, потому что bools - это целые числа (в частности, подкласс).:

>>> False==0
True
>>> False+True
1

следовательно, нет необходимости в обходных if пункты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top