Python字典与列表排序实战:按值及多键排序详解
本文详解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程序设计有所帮助。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









