找到并总结重复的字典元素

时间:2015-02-22 12:53:39

标签: python-3.x

作为一个Python n00bie,我偶然发现了一个被证明是不可解决的问题使用我的google-fu ... 因此,我请求你的帮助。

我有一个数据集A:

[{'addr': 'domain77504.com', 'cnt': 7},
 {'addr': 'domain48598.com', 'cnt': 6},
 {'addr': 'domain14775.com', 'cnt': 6},
 {'addr': 'domain58638.com', 'cnt': 5},
 {'addr': 'domain62558.com', 'cnt': 5},
 {'addr': 'domain4905.com', 'cnt': 5},
 {'addr': 'domain8352.com', 'cnt': 5},
 {'addr': 'domain71048.com', 'cnt': 5},
 {'addr': 'domain18421.com', 'cnt': 5},
 {... and so on ...}]

包含50 * number_of_cores元素。 这是一个较大的数据:超过100k域的10M +电子邮件。这就是为什么有像域名这样的域名?域71048.com' :) cnt值是上一步搜索中出现的次数。

在数据集A中查找重复项的最佳方法是什么, 通过他们的' cnt'来重复这些重复。并限制数据集A至50个最常用的元素,由他们新计算的' cnt'下降?

1 个答案:

答案 0 :(得分:2)

听起来像是collections.Counter

的工作

只需循环遍历数据,更新计数,然后使用.most_common()方法获得所需的结果。

from collections import Counter

counts = Counter()
for d in data:
    k, v = d['addr'], d['cnt']
    counts[k] += v

relevant = counts.most_common(50)