从defaultdi中提取重复值

2024-10-01 15:40:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个defaultdict定义如下:

devicedict1=collections.defaultdict(list)

设备dict包含索引键和双值,如下所示:

{0: ['9085', '9084'], 1: ['9084', '5684'], 2: ['9084', '3707'], 3: ['9084', '3707'], 4: ['3707', '9084'], 5: ['9084', '3707'], 6: ['3707', '9084'], 7: ['9084', '5684'], 8: ['9084', '3707'], 9: ['9084', '3707'], 10: ['9084', '3707'], 11: ['9084', '5684'], 12: ['3707', '9084']

我想提取出现最多的元组(value,value),并打印它们。你知道吗

我试过使用Counter和items()。你知道吗

e=Counter(devicedict1.items())
print(e)

但似乎不起作用。它应该给我们以下结果:

['9084', '3707']:30
['9084', '5684']:10

Tags: 定义valuecounteritemscollectionsdictlist元组
2条回答

使用Counter

例如:

from collections import Counter

data = {0: ['9085', '9084'], 1: ['9084', '5684'], 2: ['9084', '3707'], 3: ['9084', '3707'], 4: ['3707', '9084'], 5: ['9084', '3707'], 6: ['3707', '9084'], 7: ['9084', '5684'], 8: ['9084', '3707'], 9: ['9084', '3707'], 10: ['9084', '3707'], 11: ['9084', '5684'], 12: ['3707', '9084']}
c = Counter(map(tuple, data.values()))
print(c.most_common(2))

输出:

[(('9084', '3707'), 6), (('9084', '5684'), 3)]

如果将字典中的值map转换为元组,那么可以使用^{},因为与列表不同,元组是可散列的。要获得出现最多的n元组,可以使用^{}方法:

n = 3
Counter(map(tuple, devicedict1.values())).most_common(n)
# [(('9084', '3707'), 6), (('9084', '5684'), 3), (('3707', '9084'), n)]

相关问题 更多 >

    热门问题