从包含另一个字典的字典中创建边缘列表

时间:2016-12-02 19:34:31

标签: python dictionary networkx

我有一个类似的字典:

{
  a: {a, b, c},
  b: {a, b, c},
  ...
 }

本质上,一个包含键和值的字典,以及值本身在另一个字典中。

如何将键和值放入边列表

我希望每个边缘都像:

(a, a), (a, b), (a, c), (b, a), (b, b), (b, c)

对于字典中的每个键,它连接的边是字典中的值。

感谢。

2 个答案:

答案 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')] 字典中的一组唯一值。