首页 > 解决方案 > 在具有重复键的字典(带有值数组)中查找值

问题描述

我有一本这样的字典

{1: array([1, 5, 7, 2, 8,  3,  4],
2: array([1, 10, 11, 12, 13, 8, 15])
3: array([10,20, 21, 22, 23, 24, 25])
4: array([7, 30, 31, 32, 33, 34, 35])
}

如何找到具有重复值的键?

例如,输出是这样的:

1 出现在键 1 和 2 中

10 在键 2 和 3

标签: pythondictionary

解决方案


如果我理解这个问题,以下工作:

from numpy import array
from collections import defaultdict

d = {1: array([1, 5, 7, 2, 8,  3,  4]),
2: array([1, 10, 11, 12, 13, 8, 15]),
3: array([10,20, 21, 22, 23, 24, 25]),
4: array([7, 30, 31, 32, 33, 34, 35])
}

d2 = defaultdict(list)
for k,v in d.items():
    for x in v:
        d2[x].append(k)

d2 = {k:v for k,v in d2.items() if len(v) > 1}  
print(d2)
#prints {1: [1, 2], 7: [1, 4], 8: [1, 2], 10: [2, 3]}

请注意,如果字典来自 pandas 数据框,那么可能有一种更直接的 pandas 方法。在数据集中查找重复值是一项非常基本的操作,如果该功能还没有在库中的某个位置,那将是令人惊讶的。


推荐阅读