我正在尝试从列表中生成一个字典。
结果应该看起来像这样:
names = ['tango', 'bravo', 'tango', 'alpha', 'alpha']
结果应该看起来像这样:
{'tango': 2 , 'bravo': 1 , 'alpha': 2}
我应该如何做到这一点?
names = ['tango', 'bravo', 'tango', 'alpha', 'alpha']
{'tango': 2 , 'bravo': 1 , 'alpha': 2}
我应该如何做到这一点?
这正是Counter
的用途。
>>> from collections import Counter
>>> Counter(['tango', 'bravo', 'tango', 'alpha', 'alpha'])
Counter({'tango': 2, 'alpha': 2, 'bravo': 1})
你可以像使用字典一样使用Counter
对象,因为它是内置的dict
类的子类。文档摘录如下:
编辑:class Counter(__builtin__.dict)
字典的子类,用于计数可哈希项。有时称为“bag”或“multiset”。元素被存储为字典键,它们的计数作为字典值存储。
>>> 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}