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

    1. from operator import itemgetter
    2. rows = [
    3. {"fname": "Brian", "lname": "Jones", "uid": 1003},
    4. {"fname": "David", "lname": "Beazley", "uid": 1002},
    5. {"fname": "John", "lname": "Beazley", "uid": 1001},
    6. {"fname": "Big", "lname": "Jones", "uid": 1001}
    7. ]
    8. # 根据任意字典键来对字典列表排序
    9. rows_by_fname = sorted(rows, key=itemgetter("fname"))
    10. print(rows_by_fname)
    11. # 根据两个字典键进行排序
    12. rows_by_uid_lname = sorted(rows, key=itemgetter("uid", "lname"))
    13. print(rows_by_uid_lname)
    14. # 输出字典列表中的uid最大值
    15. max_uid_row = max(rows, key=itemgetter("uid"))
    16. print(max_uid_row)