我有一个类似的字典:
{
a: {a, b, c},
b: {a, b, c},
...
}
本质上,一个包含键和值的字典,以及值本身在另一个字典中。
如何将键和值放入边列表
我希望每个边缘都像:
(a, a), (a, b), (a, c), (b, a), (b, b), (b, c)
对于字典中的每个键,它连接的边是字典中的值。
感谢。
答案 0 :(得分:0)
a, b, c = ('a', 'b', 'c')
main = {a: {a, b, c}, b: {a, b, c}}
output = []
# loop through the keys of the dictionary
for key in main:
# iterate through set
for i in main[key]:
output.append((key, i))
print(output)
>>> [('a', 'a'), ('a', 'c'), ('a', 'b'), ('b', 'a'), ('b', 'c'), ('b', 'b')]
答案 1 :(得分:0)
虽然我不清楚您正在寻找的确切边缘情况,但作为@ double_j结果的替代方案,您可以对键和值执行itertools.product
。
find "$dir" -type d -perm -o+r
此方法找到两个迭代的Cartesian product:1)键和2)import itertools as it
list(it.product(main.keys(), set.union(*main.values())))
# [('a', 'a'), ('a', 'c'), ('a', 'b'), ('b', 'a'), ('b', 'c'), ('b', 'b')]
字典中的一组唯一值。