1
我有以下给出的python中图形边缘的表示法,其中顶点是键,边权重是值。按值/权重对字典表示的图形边缘排序
Edges = {(1,2):8.3 , (2,3): 4, (3,1):6}
我需要按重量为一个应用程序(克鲁斯卡尔算法)对边进行排序。所以鉴于字典是未分类的,我想将字典转换为如下的元组列表。
Edges_List = [(1,2,8.3), (2,3,4), (3,1,6)]
这些可以按元组的第三个元素作为关键字排序。我用这个
Edges_list = [(k,v) for k,v in Edges.items()]
但我得到一个嵌套元组使用这个。
Edges_List = [((1,2),8.3), ((2,3),4), ((3,1),6)]
我有两个问题:
- 我怎样才能创建三个而不是一个嵌套的元组,我得到上面的元组?
- 是否有任何其他方法,以便我可以按重量排序边缘字典,这是一个字典值,而不是将其转换为元组列表?
感谢itemgetter http://docs.python.org/2/library/operator.html文档中的一个小问题,我看到了operator.itemgetter(* items)。 python中'*'的意思是python中没有指针,对吧? – vkaul11
@ vkaul11'*'运算符用于解压参数列表。 http://docs.python.org/2/tutorial/controlflow.html#unpacking-argument-lists详细解释它 – ersran9