Подсчет булевских переменных в словаре

Я предложил бы Sqlite для локального устройства хранения данных. От последнего сравнительного теста я работал, это было намного лучше, чем SqlCe, и Вы не должны делать, глупым вещам нравится, сохраняют открытое соединение для повышений производительности.

Компромиссы, являющиеся, что комплект инструментальных средств менее богат и интеграция с другими продуктами MSSql является нолем.: (

10
задан SilentGhost 22 October 2009 в 15:33
поделиться

4 ответа

For clarity:

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

For conciseness (this works because True is a subclass of int with a value 1):

num_true = sum(d.values())
22
ответ дан 3 December 2019 в 15:35
поделиться
sum(d.values())
3
ответ дан 3 December 2019 в 15:35
поделиться
a.values().count(True)
2
ответ дан 3 December 2019 в 15:35
поделиться

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

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

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

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

1
ответ дан 3 December 2019 в 15:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: