计算python中键值对中替代值的出现次数

时间:2015-11-28 14:06:23

标签: python count key-value

我有很多字符串对,例如:

data = [['1','A'],['2','B'],['1','C'],['2','B'],['3','C'],['1','A'],['2','C'],['1','A'],['1','D'],['3','C']]

理论上,它们应该都是关键和它们的匹配值。虽然实际上我的数据不是。出于这个原因,我想计算和排序最常见的组合,以防值不同,得到如下结果:

{'2': [('B', 2), ('C', 1)], '1': [('A', 3), ('C', 1), ('D', 1)]}

所以我创建了一个词典:

import collections
dc = collections.defaultdict(list)
for k, v in data:
  dc[k].append(v)

虽然看起来有点慢,但这种方法也有效:

dc = {}
for k,v in data:
  dc.setdefault(k,[]).append(v)

然后我会在值不相同的情况下执行计数:

{k:collections.Counter(v).most_common() for k,v in dc.items() if len(set(v))>1}

我的数据中有成千上万对,所以我想知道如何更快地计算值的重复数量?我愿意使用像numpy或其他科学库这样的工具,但到目前为止我还没有想出更好的方法。还有其他选择吗?我通过etree从xml文件中获取数据,因此可以修改数据的原始结构,以进行最快的处理。

0 个答案:

没有答案