Python如何根据字典的键正确实现字典排序
问题根因
sorted()是Python内置函数,执行后会返回一个新的排好序的列表,不会原地修改传入的原对象,你调用之后没有接收返回值,直接打印原字典,自然看不到排序效果。- 注意Python 3.7之前的原生字典不记录插入顺序,就算把排序结果塞回原字典也不会保留顺序,需要用专门的有序字典结构。
正确实现代码
Python 3.7及以上版本(目前绝大多数环境的通用版本)
直接将排序后的键值对列表转为新字典即可,默认按key升序排序的规则和你的需求完全匹配:
# 注意:实际代码中字符串类型的A0、A16需要加引号,否则会报变量未定义错误 a_dict = {2234: "A0", 432: "A16", 3336: "A0", 11: "A0", 3: "A16"} sorted_dict = dict(sorted(a_dict.items())) print(sorted_dict)
执行后输出结果:{3: 'A16', 11: 'A0', 432: 'A16', 2234: 'A0', 3336: 'A0'}
和你预期的结果完全一致。
如果需要降序排序,只需要给sorted()加参数reverse=True即可。
Python 3.6及以下版本
低版本Python原生字典不保留插入顺序,需要用collections模块里的OrderedDict来存储排序后的结果:
from collections import OrderedDict a_dict = {2234: "A0", 432: "A16", 3336: "A0", 11: "A0", 3: "A16"} sorted_dict = OrderedDict(sorted(a_dict.items())) print(sorted_dict)
内容的提问来源于stack exchange,提问作者ttina
相关产品推荐
相关产品推荐

