现在你有一个字典列表,你想根据某个或某几个字典字段排序这个列表。使用 operator模块的itemgetter函数可以快速高性能实现。此函数可传入字典的键名称、整型值和任何定义了__getitem()__方法的值。若传入多个参数给itemgetter(),其生成的callable对象会返回一个包含所有元素值的元组,排序函数如sorted()函数会根据这个元组中元素的顺序去排序。
from operator import itemgetterrows = [{"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)
