Python中按字典键最后一个字符排序失败,求问题原因及解决方法
问题分析与解决
错误原因
你代码里的排序键逻辑出错了:
在sorted(dict.items(), key=lambda x: list(x[-1]))中,x代表字典的每个键值对元组(比如('500r', '10')),x[-1]取的是元组的第二个元素值(比如'10'),转成列表后排序,这和你要按「键的最后一个字母」排序的需求完全不符。
修正后的代码
把lambda表达式改成取键的最后一个字符即可:
from collections import OrderedDict dict = {'500r': '10', '600t': '9', '400y': '15', '200p': '2', '4500a': '32'} dict1 = OrderedDict(sorted(dict.items(), key=lambda x: x[0][-1])) print(dict1)
运行结果
输出和你的期望完全一致:
OrderedDict([('4500a', '32'), ('200p', '2'), ('500r', '10'), ('600t', '9'), ('400y', '15')])
内容的提问来源于stack exchange,提问作者Kuhan Vickneswaran
相关产品推荐
相关产品推荐

