如何查找值相同的键(值也是字典)

时间:2019-06-05 08:42:39

标签: python graph-theory

有一个图(请参见示例here),我正在使用字典来存储邻接矩阵:

{A:{B:a, C:a, D:a}, B:{A:a, E:b}, C:{A:a}, D:{A:a}, E:{B:b}}

大写字母是节点,小写字母是边。

我试图找到具有相同邻接关系的节点(在此示例中为C,D)。我该如何实施?更改邻接矩阵的数据结构很好。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,那么如果您的数据类型是字典,那么这可以为您提供解决方案:

    temp = {}
    for key, value in your_dictionary.items():
       temp.setdefault(value, set()).add(key)

如果您随后要从“词典”中检索具有相同值的键,则可以使用此键:

    res = [values for key, values in temp.items() if len(values) > 1]

答案 1 :(得分:0)

您可以迭代该图,并使用==运算符检查每个不同的节点的邻接细节是否相同。

graph = {
    'A': {'B': 'a', 'C': 'a', 'D': 'a'},
    'B': {'A': 'a', 'E': 'b'},
    'C': {'A': 'a'},
    'D': {'A': 'a'},
    'E': {'B': 'b'},
}

res = {}
for u, u_adj in graph.items():
    res.setdefault(u, [])
    for v, v_adj in graph.items():
        if u != v and u_adj == v_adj:
            res[u].append(v)
print(res)