python dict order by key 字典关键字排序

来源:互联网 发布:淘宝星期四官换机知乎 编辑:程序博客网 时间:2024/05/18 19:20

from operator import itemgetter 

通过使用operator模块的itemgetter函数,可以非常容易的排序这样的数据结构

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}]

根据任意的字典字段来排序输入结果行是很容易实现的,代码示例:

from operator import itemgetterrows_by_fname = sorted(rows, key=itemgetter('fname'))rows_by_uid = sorted(rows, key=itemgetter('uid'))print(rows_by_fname)print(rows_by_uid)

代码的输出如下:

[{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'},{'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'},{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}][{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'},{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},{'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'},{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}]

itemgetter()函数也支持多个keys,比如下面的代码

rows_by_lfname = sorted(rows, key=itemgetter('lname','fname'))print(rows_by_lfname)

会产生如下的输出:

[{'fname': 'David', 'uid': 1002, 'lname': 'Beazley'},{'fname': 'John', 'uid': 1001, 'lname': 'Cleese'},{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'},{'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}]

http://python3-cookbook.readthedocs.org/zh_CN/latest/c01/p13_sort_list_of_dicts_by_key.html
0 0
原创粉丝点击