Вопрос-Ответ

Using a dictionary to count the items in a list

Использование словаря для подсчета элементов в списке

Предположим, у меня есть список элементов, например:

['apple', 'red', 'apple', 'red', 'red', 'pear']

Мне нужен словарь, который подсчитывает, сколько раз каждый элемент появляется в списке. Итак, для списка выше результат должен быть:

{'apple': 2, 'red': 3, 'pear': 1}

Как я могу сделать это просто на Python?


Если вас интересует подсчет экземпляров только одного элемента в списке, см. Как мне подсчитать вхождения элемента списка?.

Переведено автоматически
Ответ 1

В 2.7 и 3.1 для этой цели есть специальный Counter (dict подкласс).

>>> from collections import Counter
>>> Counter(['apple','red','apple','red','red','pear'])
Counter({'red': 3, 'apple': 2, 'pear': 1})
Ответ 2

Мне нравится:

counts = dict()
for i in items:
counts[i] = counts.get(i, 0) + 1

.get позволяет указать значение по умолчанию, если ключ не существует.

Ответ 3

Просто используйте свойство списка count\

i = ['apple','red','apple','red','red','pear']
d = {x:i.count(x) for x in i}
print d

вывод :

{'pear': 1, 'apple': 2, 'red': 3}
Ответ 4
>>> L = ['apple','red','apple','red','red','pear']
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i in L:
... d[i] += 1
>>> d
defaultdict(<type 'int'>, {'pear': 1, 'apple': 2, 'red': 3})
python list