Python如何按键排序字典并返回完整键值对字典?
解决方法:一行代码得到有序字典
嘿,刚好碰到过类似的需求!你现在用sorted()得到的是一个包含键值对元组的列表,而你需要的是字典类型。其实不用写for循环,有个超简便的方法:
直接用dict()转换排序后的列表
在Python 3.7及以上版本,普通字典是插入有序的——也就是说,它会记住键值对被添加进去的顺序。所以你只需要把sorted()返回的元组列表直接传给dict()构造器就行:
my_dict = {'b':[456], 'a': [123]} # 按键排序,转成有序字典 sorted_dict = dict(sorted(my_dict.items(), key=lambda item: item[0])) print(sorted_dict) # 输出: {'a': [123], 'b': [456]}
补充说明:关于排序的key参数
你原来代码里用的key=str其实也能得到正确结果,但本质上是把整个键值对元组转成字符串来排序(比如('b', [456])变成字符串后和('a', [123])比较)。更直观、规范的写法是用lambda item: item[0],明确指定按字典的键来排序,可读性更强。
兼容旧版本Python(3.6及以下)
如果你的项目还在使用Python 3.6或更早的版本,可以用collections.OrderedDict来实现有序字典:
from collections import OrderedDict my_dict = {'b':[456], 'a': [123]} sorted_dict = OrderedDict(sorted(my_dict.items(), key=lambda item: item[0]))
不过现在Python 3.7+已经成为主流,普通字典完全能满足需求啦。
内容的提问来源于stack exchange,提问作者Chuepapiii
相关产品推荐
相关产品推荐

