千家信息网

Python如何通过公共键对不同字典进行排序

发表于:2025-02-12 作者:千家信息网编辑
千家信息网最后更新 2025年02月12日,这篇文章主要为大家展示了"Python如何通过公共键对不同字典进行排序",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python如何通过公共键对不同字典进
千家信息网最后更新 2025年02月12日Python如何通过公共键对不同字典进行排序

这篇文章主要为大家展示了"Python如何通过公共键对不同字典进行排序",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python如何通过公共键对不同字典进行排序"这篇文章吧。

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

根据所有字典中共有的字段进行排序,字段可以是字典的键名称、用数字表示的列表元素或是任何可以传给对象的 __getitem__() 方法的值。

如果传多个标记给 itemgetter(),那么它产生的可调用对象将返回以个包含所有元素在内的元组,然后 sorted() 将根据对元组的排序结果来排序输出的结果。

from operator import itemgetterrows_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() 函数接受多个键时

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() 函数

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

以上是"Python如何通过公共键对不同字典进行排序"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0