количество значений в словаре Python - PullRequest
1 голос
/ 02 ноября 2011

У меня есть словарь, в котором каждый ключ имеет несколько значений.Я пытаюсь подсчитать общее количество значений.Например:

key: 1, value: abc, bcd, egf
key: 2, value: asj,asfah,afhs,jhsafh

итого, общее количество значений равно 3 + 4 = 7. Какой питонный способ получить этот счетчик?Спасибо

Ответы [ 3 ]

7 голосов
/ 02 ноября 2011

Как насчет:

sum(len(val) for val in dictionary.itervalues())

Обратите внимание, что здесь используется генератор вместо создания временного списка длин.

4 голосов
/ 02 ноября 2011

Вы хотите перебрать все ключи и значения в словаре, находя длину каждого набора значений.

Следующее действительно использует понимание списка для построения списка всех этих длин, а затем берет их сумму:

sum([len(value) for key, value in my_dict.iteritems()]) 

Если вы хотите быть более эффективным, вы можете заменить for key, value in my_dict.iteritems() на for value in my_dict.itervalues() и использовать выражение генератора, как предложено Кэмероном.

2 голосов
/ 02 ноября 2011

Если вы уверены , что каждое значение в dict будет списком, то это работает:

sum(len(val) for val in d.itervalues())

Если нет, требуется немного больше внимания и, возможно, немного больше информации. Например, строки также имеют len (количество символов в строке). Вы, вероятно, хотите, чтобы строки считались как 1 запись, а не как число, пропорциональное длине. Если так, эта менее читаемая версия работает:

sum(1 if isinstance(val, basestring) else len(val) for val in d.itervalues())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...