现在你有一个字典列表,你想根据某个或某几个字典字段排序这个列表。使用 operator
模块的itemgetter
函数可以快速高性能实现。此函数可传入字典的键名称、整型值和任何定义了__getitem()__
方法的值。若传入多个参数给itemgetter()
,其生成的callable
对象会返回一个包含所有元素值的元组,排序函数如sorted()
函数会根据这个元组中元素的顺序去排序。
from operator import itemgetter
rows = [
{"fname": "Brian", "lname": "Jones", "uid": 1003},
{"fname": "David", "lname": "Beazley", "uid": 1002},
{"fname": "John", "lname": "Beazley", "uid": 1001},
{"fname": "Big", "lname": "Jones", "uid": 1001}
]
# 根据任意字典键来对字典列表排序
rows_by_fname = sorted(rows, key=itemgetter("fname"))
print(rows_by_fname)
# 根据两个字典键进行排序
rows_by_uid_lname = sorted(rows, key=itemgetter("uid", "lname"))
print(rows_by_uid_lname)
# 输出字典列表中的uid最大值
max_uid_row = max(rows, key=itemgetter("uid"))
print(max_uid_row)