计算列表中的项目并使其成为字典

时间:2015-12-28 17:46:06

标签: python list dictionary

我正在尝试从列表中生成字典

names = ['tango', 'bravo', 'tango', 'alpha', 'alpha']

结果应该是这样的:

{'tango': 2 , 'bravo': 1 , 'alpha': 2}

我怎么能这样做?

1 个答案:

答案 0 :(得分:5)

这正是Counter的用途。

>>> from collections import Counter
>>> Counter(['tango', 'bravo', 'tango', 'alpha', 'alpha'])
Counter({'tango': 2, 'alpha': 2, 'bravo': 1})

您可以像使用字典一样使用Counter对象,因为它是内置dict的子类。摘自文档:

  

班级计数器(__ builtin __。dict)
  用于计算可散列物品的Dict子类。有时叫一个包   或多重集。元素存储为字典键及其计数   存储为字典值。

编辑:

根据要求,这是另一种方式:

>>> names = ['tango', 'bravo', 'tango', 'alpha', 'alpha']
>>> d = {}
>>> for name in names:
...     d[name] = d.get(name, 0) + 1
... 
>>> d
{'bravo': 1, 'tango': 2, 'alpha': 2}