在Python中对加权无向图进行排序

问题描述 投票:0回答:1

我需要根据权重对下面的图表进行排序。

    graph_G = {'A': [('B', 7), ('E', 2)],
       'B': [('C', 6)],
       'C': [('A', 5), ('D', 3)],
       'D': [('E', 1)],
       'E': [('A', 7)],
      }

我已经尝试过了

print("Sort Dict %s" % (sorted(graph_G.items(), key=itemgetter(1))))

这是根据元组的第一个字符对字典进行排序。我想将其排序在元组的第二部分(权重)。

所以我希望它像下面这样排序。

graph_G = {'A': [('E', 2), ('B', 7)],
       'B': [('C', 6)],
       'C': [('D', 3), ('A', 5)],
       'D': [('E', 1)],
       'E': [('A', 7)],
      }

有什么办法可以做到这一点吗?

python-3.x data-structures undirected-graph
1个回答
0
投票
graph_G = {
'A': [('B', 7), ('E', 2)],
'B': [('C', 6)],
'C': [('A', 5), ('D', 3)],
'D': [('E', 1)],
'E': [('A', 7)]
}

sorted_graph_G = {node: sorted(neighbors, key=lambda x: x[1]) for node, neighbors in graph_G.items()}

print("Sorted graph based on weights:")
for node, neighbors in sorted_graph_G.items():
print(f"{node}: {neighbors}")

输出:

Sorted graph based on weights:
A: [('E', 2), ('B', 7)]
B: [('C', 6)]
C: [('D', 3), ('A', 5)]
D: [('E', 1)]
E: [('A', 7)]
© www.soinside.com 2019 - 2024. All rights reserved.