python - 在 python 字典中查找键以获取相应字典值中元素的交集

标签 python list dictionary intersection

我有以下 Python 字典:

{(a,b,c): [(1, 2, 3), (4, 5, 6)], (d,e,f):[(7,8,9)] ,(m, n, o): [(1, 2, 3), (7, 8, 9)]}

我试图按以下格式查找与列表内元组元素的交集相对应的键:
对于元组 (1,2,3),交集的输出应为:

(a,b,c), (m,n,o)

虽然可以将列表中的每个元组元素作为字典值进行迭代并找到相应的键,但我正在寻找一种Python式的方法来实现这一点。

最佳答案

>>> dic = {('a','b','c'): [(1, 2, 3), (4, 5, 6)], ('d','e','f'):[(7,8,9)] ,('m', 'n', 'o'): [(1, 2, 3), (7, 8, 9)]}
>>> [i for i in dic if (1,2,3) in dic[i]]
[('a', 'b', 'c'), ('m', 'n', 'o')]
>>> 

如果不想迭代,可以使用filter

>>> list(filter(lambda x:(1,2,3) in dic[x],dic))
[('a', 'b', 'c'), ('m', 'n', 'o')]

如果您是一个高级模块爱好者,请使用itertools.takewhile

>>> from itertools import takewhile
>>> list(takewhile(lambda x:(1,2,3) in dic[x],dic))
[('a', 'b', 'c'), ('m', 'n', 'o')]

最后,如果不在内部/外部迭代集合,以上任何一个都不会做正确的事情。这个奇特的模块是一种包装器,在底层做或多或少相同的事情。

关于python - 在 python 字典中查找键以获取相应字典值中元素的交集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40816448/

相关文章:

python - 在 Fedora 上运行 python 脚本时没有名为 lxml.html 的模块

python - 将字典与自身进行比较并有效地删除相似的键

list - scala 通过从带有元组的现有列表中省略 n 元素来创建新列表

python - 更新字典中的嵌套计数器

arrays - 带有字符串数组的 Swift 字典删除值

python - 如何将数据从 pandas 数据帧分块加载到 spark 数据帧

python - 试图在两个字符串中找到匹配项 - Python

python - 替换列表列表中的值

python - Python 的切片边界和 "stride"之间的神秘交互

ios - 如何使用 Swift 找到距我所在位置的距离