Skip to main content
 首页 » 编程设计

python之在 python 字典中排序键值对列表

2025年05月04日16shangdawei

如何在 python 中对存储为字典的邻接表进行排序?

Adjacency List: 
0: [(7, 0.16), (4, 0.38), (2, 0.26), (6, 0.58)] 
1: [(5, 0.32), (7, 0.19), (2, 0.36), (3, 0.29)] 
2: [(3, 0.17), (0, 0.26), (1, 0.36), (7, 0.34), (6, 0.4)] 
3: [(2, 0.17), (1, 0.29), (6, 0.52)] 
4: [(5, 0.35), (7, 0.37), (0, 0.38), (6, 0.93)] 
5: [(4, 0.35), (7, 0.28), (1, 0.32)] 
6: [(2, 0.4), (3, 0.52), (0, 0.58), (4, 0.93)] 
7: [(4, 0.37), (5, 0.28), (0, 0.16), (1, 0.19), (2, 0.34)] 

我希望每一行都按 float 排序。

这是添加值的方式,但使用循环并从标准输入读取而不是手​​动:

adjList = defaultdict(list) 
adjList[0].append((7, 0.16)) 

我知道我必须使用 sorted() 并且我尝试过这样的事情:

sorted(adjList) 

或

for i in adjList: 
sorted(adjList[i]) 

或

value for (key, value) in sorted(adjList[0]) 

请您参考如下方法:

sorted给定可迭代返回一个新的排序列表。如果您想就地排序,请使用 list.sort() :

from operator import itemgetter 
for k in adjList: 
    adjList[k].sort(key=itemgetter(1)) 

key=itemgetter(1) 确保它在元组的第二个元素上排序,或者您也可以编写 key=lambda x: x[1].

如果您想按降序排序,请使用 key=itemgetter(1), reverse=True。