利用 operator 模块中的 itemgetter 函数对这类结构进行排序。
1
2
3
4
5
6
|
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 } ] |
根据所有字典中共有的字段进行排序,字段可以是字典的键名称、用数字表示的列表元素或是任何可以传给对象的 __getitem__() 方法的值。
如果传多个标记给 itemgetter(),那么它产生的可调用对象将返回以个包含所有元素在内的元组,然后 sorted() 将根据对元组的排序结果来排序输出的结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
from operator import itemgetter rows_by_fname = sorted (rows, key = itemgetter( 'fname' )) rows_by_uid = sorted (rows, key = itemgetter( 'uid' )) print (rows_by_fname) # [{'fname': 'Big', 'uid': 1004, 'lname': 'Jones'}, # {'fname': 'Brian', 'uid': 1003, 'lname': 'Jones'}, # {'fname': 'David', 'uid': 1002, 'lname': 'Beazley'}, # {'fname': 'John', 'uid': 1001, 'lname': 'Cleese'}] print (rows_by_uid) # [{'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() 函数接受多个键时
1
2
3
4
5
6
|
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'}] |
同样 itemgetter() 也适用于 min() 和 max() 函数
1
2
3
4
|
>>> min (rows, key = itemgetter( 'uid' )) { 'fname' : 'John' , 'lname' : 'Cleese' , 'uid' : 1001 } >>> max (rows, key = itemgetter( 'uid' )) { 'fname' : 'Big' , 'lname' : 'Jones' , 'uid' : 1004 } |
以上就是Python教程通过公共键对不同字典进行排序示例详解的详细内容,更多关于Python公共键对字典进行排序的资料请关注服务器之家其它相关文章!
原文链接:https://blog.csdn.net/chenyuhuaxin/article/details/100585897