Contents
20.1.11. 根据某个关键字排序字典列表¶
#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2019/7/28 19:50
# filename: 11.通过某个关键字排序一个字典列表.py
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}
]
from operator import itemgetter
rows_by_fname = sorted(rows, key=itemgetter("fname"))
rows_by_uid = sorted(rows, key=itemgetter("uid"))
for rows_by_f in rows_by_fname:
print(rows_by_f)
print()
for rows_by_u in rows_by_uid:
print(rows_by_u)
输出信息
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}
{'fname': 'David', 'lname': 'Beazley', 'uid': 1002}
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001}
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001}
{'fname': 'David', 'lname': 'Beazley', 'uid': 1002}
{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
itemgetter() 函数也支持多个 keys,比如下面的代码
rows_by_lfname = sorted(rows, key=itemgetter("lname", "fname"))
for rows_by_lfna in rows_by_lfname:
print(rows_by_lfna)
输出信息
{'lname': 'Beazley', 'fname': 'David', 'uid': 1002}
{'lname': 'Cleese', 'fname': 'John', 'uid': 1001}
{'lname': 'Jones', 'fname': 'Big', 'uid': 1004}
{'lname': 'Jones', 'fname': 'Brian', 'uid': 1003}