Python:计算字典中重复值的数量

4

我有一个如下的字典:

dictA = { ('unit1','test1') : 'alpha' , ('unit1','test2') : 'beta', ('unit2','test1') : 'alpha', ('unit2','test2') : 'gamma' , ('unit3','test1') : 'delta' , ('unit3','test2') : 'gamma'   }

如何针对每个测试独立地计算重复值的数量,而不考虑单位?

例如:

在“test1”中有2个“alpha”,1个“delta”

在“test2”中有1个“beta”,2个“gamma”

有任何意见吗?

非常感谢。

1个回答

9

在 Python 2.7 或 3.1 及以上版本中,您可以使用 collections.Counter

from collections import Counter
counts = Counter((k[1], v) for k, v in dictA.iteritems())
print(counts)

打印

Counter({('test1', 'alpha'): 2, ('test2', 'gamma'): 2, ('test2', 'beta'): 1, ('test1', 'delta'): 1})

在之前的版本中,collections.defaultdict(int) 的工作方式类似。 - chmullig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接