如何编写一个函数,它需要一个字典并返回一组由至少具有一个公共(public)值的键对组成的集合?
示例:
我有以下字典:
dict = {
'C': {'123'},
'A': {'123', '456'},
'D': {'123'},
'B': {'789', '456'},
'E': {'789'}}
MyFunction(dict) 应该返回我:
{("A", "B"), ("A", "C"), ("A", "D"), ("B", "E"), ("C", "D")}
最佳答案
from itertools import combinations
d = {
'C': {'123'},
'A': {'123', '456'},
'D': {'123'},
'B': {'789', '456'},
'E': {'789'}
}
def MyFunction(d):
out = set()
for i, j in combinations(d, 2):
if d[j].intersection(d[i]) and (i, j) not in out and (j, i) not in out:
out.add((i, j))
return set(tuple(sorted(i)) for i in out)
print(MyFunction(d))
print(MyFunction(d) == {("A", "B"), ("A", "C"), ("A", "D"), ("B", "E"), ("C", "D")})
输出是:
{('A', 'D'), ('A', 'B'), ('B', 'E'), ('A', 'C'), ('C', 'D')}
True
如果您认为 ('A', 'C')
和 ('C', 'A')
相同,则可以替换
return set(tuple(sorted(i)) for i in out)
仅仅
return out
关于python - 从字典中返回一组具有共同值的键对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53420730/