Подсчет логических значений в словаре - PullRequest
10 голосов
/ 22 октября 2009

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

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

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

Ответы [ 4 ]

22 голосов
/ 22 октября 2009

Для наглядности:

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

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

num_true = sum(d.values())
3 голосов
/ 22 октября 2009
sum(d.values())
2 голосов
/ 22 октября 2009
a.values().count(True)
1 голос
/ 22 октября 2009

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

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

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

, следовательно, нет необходимости в обходных if предложениях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...