脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python教程通过公共键对不同字典进行排序示例详解

Python教程通过公共键对不同字典进行排序示例详解

2022-01-13 00:27沉沉沉小姐 Python

本篇文章是Python教程基础篇,通过一些示例为大家讲解Python通过公共键对不同字典进行排序的方式,有需要的朋友可以借鉴参考下,希望能够有所帮助

利用 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

延伸 · 阅读

精彩推荐