博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python cookbook】【数据结构与算法】13.通过公共键对字典列表排序
阅读量:5369 次
发布时间:2019-06-15

本文共 2072 字,大约阅读时间需要 6 分钟。

问题:想根据一个或多个字典中的值来对列表排序

解决方案:利用operator模块中的itemgetter()函数对这类结构进行排序是非常简单的。

# Sort a list of a dicts on a common keyrows = [    {
'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {
'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {
'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {
'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]from operator import itemgetterrows_by_fname = sorted(rows, key=itemgetter('fname'))rows_by_uid = sorted(rows, key=itemgetter('uid'))from pprint import pprintprint("Sorted by fname:")pprint(rows_by_fname) #pprint模块的pprint()提供了打印出任何python数据结构类和方法。print("Sorted by uid:")pprint(rows_by_uid)rows_by_lfname = sorted(rows, key=itemgetter('lname','fname'))print("Sorted by lname,fname:")pprint(rows_by_lfname)
>>> ================================ RESTART ================================>>> Sorted by fname:[{
'fname': 'Big', 'lname': 'Jones', 'uid': 1004}, {
'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {
'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {
'fname': 'John', 'lname': 'Cleese', 'uid': 1001}]Sorted by uid:[{
'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {
'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {
'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {
'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]Sorted by lname,fname:[{
'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {
'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {
'fname': 'Big', 'lname': 'Jones', 'uid': 1004}, {
'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}]>>>

补充说明:

有时候会利用lambda表达式来取代itemgetter()的功能:但是利用itemgetter()会运行的更快一些,所以考虑性能的话,应该使用itemgetter()。

rows_by_fname = sorted(rows, key=lambda r:r['fname'])rows_by_uid = sorted(rows, key=lambda r:r['uid'])

最后,本节展示的技术同样适用于min()和max()这样的函数:

>>> min(rows, key=itemgetter('uid')){
'lname': 'Cleese', 'fname': 'John', 'uid': 1001}>>> max(rows, key=itemgetter('uid')){
'lname': 'Jones', 'fname': 'Big', 'uid': 1004}>>> itemgetter('uid')
>>>

 

转载于:https://www.cnblogs.com/apple2016/p/5747116.html

你可能感兴趣的文章
Python学习week2-python介绍与pyenv安装
查看>>
php判断网页是否gzip压缩
查看>>
一个有意思的js实例,你会吗??[原创]
查看>>
sql server中bit字段实现取反操作
查看>>
Part3_lesson2---ARM指令分类学习
查看>>
jQuery拖拽原理实例
查看>>
JavaScript 技巧与高级特性
查看>>
Uva 11729 Commando War
查看>>
增强学习(一) ----- 基本概念
查看>>
ubuntu下USB连接Android手机
查看>>
C# 语句 分支语句 switch----case----.
查看>>
反射获取 obj类 的属性 与对应值
查看>>
表单中的readonly与disable的区别(zhuan)
查看>>
win10下安装配置mysql-8.0.13--实战可用
查看>>
周记2018.8.27~9.2
查看>>
MySQL中 1305-FUNCTION liangshanhero2.getdate does not exit 问题解决
查看>>
Ctrl+Alt+Down/Up 按键冲突
查看>>
python序列化和json
查看>>
mongodb
查看>>
网格与无网格
查看>>