[00013] 通过某个关键字,排序一个字典列表
来源:互联网 发布:网络数据分析工具解析 编辑:程序博客网 时间:2024/06/02 04:06
通过某个关键字,排序一个字典列表
一、 解决问题
根据某个或某几个字典字段来排序字典列表。
二、解决方案
模块: operator
函数: itemgetter
三、代码说明
#!/usr/bin/env/python#cofing=utf-8"""operator.itemgetter(item)operator.itemgetter(*items) 这个函数会调用所传入的操作数的__getitem__()方法返回一个带有item的可调用对象operator.attrgetter(attr)operator.attrgetter(*attrs) 返回一个带有操作数中的attr属性的可调用对象"""from operator import itemgetter, attrgetter#待排序数据rows = [ {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]rows_by_name = sorted(rows, key=itemgetter('fname'))print (rows_by_name)"""[{'uid': 1004, 'fname': 'Big', 'lname': 'Jones'}, {'uid': 1003, 'fname': 'Brian', 'lname': 'Jones'}, {'uid': 1002, 'fname': 'David', 'lname': 'Beazley'}, {'uid': 1001, 'fname': 'John', 'lname': 'Cleese'}]"""rows_by_uid = sorted(rows, key=itemgetter('uid'))print (rows_by_uid)"""[{'lname': 'Cleese', 'fname': 'John', 'uid': 1001}, {'lname': 'Beazley', 'fname': 'David', 'uid': 1002}, {'lname': 'Jones', 'fname': 'Brian', 'uid': 1003}, {'lname': 'Jones', 'fname': 'Big', 'uid': 1004}]"""# 支持多个rows_by_lfname = sorted(rows, key=itemgetter('lname','fname'))print(rows_by_lfname)"""[{'uid': 1002, 'lname': 'Beazley', 'fname': 'David'}, {'uid': 1001, 'lname': 'Cleese', 'fname': 'John'}, {'uid': 1004, 'lname': 'Jones', 'fname': 'Big'}, {'uid': 1003, 'lname': 'Jones', 'fname': 'Brian'}]"""
使用lambda函数进行替代
# 使用lambda 表达式替代rows_by_fname = sorted(rows, key=lambda r: r['fname'])rows_by_lfname = sorted(rows, key= lambda r: (r['lname'], r['fname']))
四、关联知识
参照blog: python中sort和sorted函数
五、总结
当标准库需要使用key做参数时,可以考虑参入operator.itemgetter(),operator.attrgetter()方法来进行传入一个可调用对象。
- min(),max() ->key参数,就是比较时的规则。
六、代码地址
github地址:https://github.com/weichen666/python_cookbook
目录/文件:first_selection/learn_operation_itemgetter
七、参考
python中sort和sorted函数:http://blog.csdn.net/qq_29883591/article/details/51615499
0 0
- [00013] 通过某个关键字,排序一个字典列表
- Python字典、列表排序
- Python排序,针对列表,字典
- 下拉列表,选中某个值通过js动态生成一个文本框,javascript,text
- PYTHON 对列表|字典|列表中多个字典排序
- Python中 字典排序、列表排序
- Python中 字典排序、列表排序
- Python中 字典排序、列表排序
- Python中 字典排序、列表排序
- python列表多关键字排序
- 列表(list)和字典(dict)数据排序
- Python 字典 列表 嵌套 复杂排序大全
- value是列表的字典排序
- python字典和列表各种嵌套排序
- 使用sorted对列表和字典 排序
- python3中字符串、列表、字典的排序
- python中列表和字典排序
- Win8 C# 对象排序---通过某个属性
- 基于TINY4412的Andorid开发-------简单的LED灯控制
- kmalloc&vmalloc&malloc
- android studio生成aar包并在其他工程引用aar包
- 【sqlserver】获取指定日期的上个季度的第一天和最后一天
- 油田大数据与创新之路的探究
- [00013] 通过某个关键字,排序一个字典列表
- easygui系列之-打开文件显示内容
- void (*signal(int signo, void (*func) (int))) (int) 理解
- 对于Matlab中FFT变换的思考
- fork()&vfork()
- 程序员数学--卡特兰数(Catalan number)
- 在linux纯命令下如何去配置网卡信息
- 用flask开发个人博客(33)—— 使用itsdangerous进行账户的确认
- 系统调用&上下文&中断