我有以下 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/