python中的字典如何按值大小进行排序
发布网友
发布时间:2024-09-17 05:35
我来回答
共1个回答
热心网友
时间:2024-09-21 09:51
Python中的字典按值排序教程
当你需要对Python字典dict1 = {0: 0.28, 1: 0.25, 2: 0.45} 按照值的大小进行排序时,可能会遇到一些挑战。首先,直接使用内置的排序函数并不直接适用于字典,因为字典本身是无序的。
首先尝试使用lambda函数进行升序排序,如这样:
python
sorted_dict = sorted(dict1.items(), key=lambda item: item[1])
这段代码会返回一个元组列表 [(1, 0.25), (0, 0.28), (2, 0.45)],这是因为lambda函数将字典项转换为了元组,元组是基于值排序的。
但是,这并不是我们想要的字典格式。解决这个问题的办法是将排序后的元组列表转换回字典,可以这样做:
python
sorted_dict = {k: v for k, v in sorted_dict}
这会得到字典 {1: 0.25, 0: 0.28, 2: 0.45},但是值的顺序已经按升序排列,索引顺序却与原字典不同。
最后,为保持原字典的键值对应关系,需要重新按照原索引顺序赋值给dict1。这里需要一个辅助列表来保存新的键值对,如下所示:
python
sorted_items = [(k, v) for k, v in sorted_dict.items()]
new_dict1 = {k: v for k, v in zip(dict1.keys(), sorted_items)}
现在,`new_dict1` 就会是按值排序后的字典,满足你的需求 {0: 0.25, 1: 0.28, 2: 0.45},同时保持了原始键的顺序。