python - 在具有重复键的字典(带有值数组)中查找值
问题描述
我有一本这样的字典
{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
解决方案
如果我理解这个问题,以下工作:
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 方法。在数据集中查找重复值是一项非常基本的操作,如果该功能还没有在库中的某个位置,那将是令人惊讶的。
推荐阅读
- javascript - 使用 TypeORM 中定义的实体连接到 Postgres 数据库时,Javascript 内存不足
- autohotkey - AHK 和 US-INT 键盘:为什么“死”键不再被吞掉?
- python - 无法通过 python 和 Beautiful Soup 抓取谷歌专利 URL
- c# - 有没有办法在线程池中的线程完成后立即在主线程上执行功能?
- c - 结构中用户的有限输入
- javascript - React-Native onSubmitEditting 花费太多时间来执行功能
- arrays - 推断元组数组中的类型
- laravel - 登录后如何在laravel中为两个不同的守卫重新生成不同的会话?
- java - onClick 自定义 CardView 上的按钮
- reactjs - 需要帮助映射 Firebase 查询结果以用于 FlatList 分页