Python字典与列表排序实战:按值及多键排序详解

雨后青山
雨后青山
发布时间:2026-10-13 | 3人浏览过
原创

本文详解Python中字典按值排序及列表内字典按指定Key排序的实现方法。通过sorted函数结合lambda表达式,演示如何对字典value进行降序排列,以及如何对包含字典的列表依据score和no等多字段进行稳定排序,附带完整代码与输出示例。

本文介绍Python中实现字典排序以及按照List中字典的特定Key进行排序的具体方法,供读者参考学习。

1. 实现字典按Value值从大到小排序

排序代码示例

dict = {'a':21, 'b':5, 'c':3, 'd':54, 'e':74, 'f':0}
new_dict = sorted(dict.iteritems(), key=lambda d:d[1], reverse = True)
print new_dict

运行结果如下:

[('e', 74), ('d', 54), ('a', 21), ('b', 5), ('c', 3), ('f', 0)]

2. Python中如何对List内的字典按指定Key进行排序:

具体示例如下:

s=[
{"no":28,"score":90},
{"no":25,"score":90},
{"no":1,"score":100},
{"no":2,"score":20},
]
print "original s: ",s
# 单级排序,仅按照score排序
new_s = sorted(s,key = lambda e:e.__getitem__('score'))
print "new s: ", new_s
# 多级排序,先按照score,再按照no排序
new_s_2 = sorted(new_s,key = lambda e:(e.__getitem__('score'),e.__getitem__('no')))
print "new_s_2: ", new_s_2

程序输出结果:

original s: [{'score': 90, 'no': 28}, {'score': 90, 'no': 25}, {'score': 100, 'no': 1}, {'score': 20, 'no': 2}] new s: [{'score': 20, 'no': 2}, {'score': 90, 'no': 28}, {'score': 90, 'no': 25}, {'score': 100, 'no': 1}] new_s_2: [{'score': 20, 'no': 2}, {'score': 90, 'no': 25}, {'score': 90, 'no': 28}, {'score': 100, 'no': 1}]

关键说明

1. new_s与new_s2的区别在于:当score值均为90时,new_s_2会进一步按照no字段进行排序。

2. 上述示例中排序顺序为从小到大;若在sorted函数的参数中增加reverse = True,则可实现从大到小的排序。

PS:此处推荐一款排序算法演示工具供参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具: http://tools.jb51.net/aideddesign/paixu_ys

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表