所以我遇到了一个问题。 我有这个函数,我得到一个包含字典作为输入的列表,输出应该是一个新的字典,其中的键都在输入字典中,并且作为值包含键所具有的所有值的列表。
EG
d1 = {1: 10, 2: 20, 3: 30, 4: 40, 5: 50}
d2 = {1: 20, 3: 60, 5: 100}
d3 = {1: 10, 7: 70, 5: 55}
print find_intersection([d1, d2, d3])
# prints {1: [10, 10, 20], 5: [50, 55, 100]}
最佳答案
如果你先找到keys()
交集,你就可以用推导式来制作字典。
您可以使用 __and__
对字典进行 reduce()(感谢 UltraInstinct)来构建键的交集。
import operator
# python 3
# from functools import reduce
dicts = [
{1: 10, 2: 20, 3: 30, 4: 40, 5: 50},
{1: 20, 3: 60, 5: 100},
{1: 10, 7: 70, 5: 55}
]
keys = reduce(operator.__and__, map(set, dicts)
{k: [d[k] for d in [d1, d2, d3]] for k in keys}
# {1: [10, 20, 10], 5: [50, 100, 55]}
关于python - 找到字典键的交集并将它们组合起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53637702/