use*_*084 1 python dictionary python-2.7
我有一个defaultdict,然后转换成字典.现在我正在寻找一种方法来计算按值分组的项目.我的意思是:
dict = {1: [103], 2: [9], 3: [3, 4], 4: [103, 106], 10: [3, 4], 11: [1, 9], 28: [1]}
for key in dict.items():
print key
Run Code Online (Sandbox Code Playgroud)
(1, [103])
(2, [9])
(3, [3, 4])
(4, [103, 106])
(10, [3, 4])
(11, [1, 9])
(28, [1])
item : total
{4 : 2, 106 : 1} ...
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
您可以使用collections.Counter来计算值列表中每个元素的出现次数,如下所示
>>> from collections import Counter
>>> Counter(value for values in d.itervalues() for value in values)
Counter({1: 2, 3: 2, 4: 2, 103: 2, 9: 2, 106: 1})
Run Code Online (Sandbox Code Playgroud)
Counter是字典的子类.所以,你可以像任何其他字典一样使用它
itertools.chain.from_iterable像这样,可以完成值的扁平化
>>> from collections import Counter
>>> from itertools import chain
>>> Counter(chain.from_iterable(d.itervalues()))
Counter({1: 2, 3: 2, 4: 2, 103: 2, 9: 2, 106: 1})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2993 次 |
| 最近记录: |