通过某个关键字排序一个字典列表
方法1:operator.itemgetter
通过使用 operator
模块的 itemgetter
函数,可以非常容易的排序这样的数据结构。
假设你从数据库中检索出来网站会员信息列表,并且以下列的数据结构返回:
from operator import 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}
]
rows_byfname = sorted(rows, key= itemgetter('lname'))
a = sorted(rows, key=itemgetter('uid'),reverse=True)
print(rows_byfname)
# [{'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]
print(a)
# [{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}, {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}]
方法2: lambda
b = sorted(rows,key= lambda x: x['uid'])
print(b)
# [{'fname': 'John', 'lname': 'Cleese', 'uid': 1001}, {'fname': 'David', 'lname': 'Beazley', 'uid': 1002}, {'fname': 'Brian', 'lname': 'Jones', 'uid': 1003}, {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}]
方法3: min() max()
d = max (rows, key= lambda x: x['uid'])
print(d) # {'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
e = min (rows, key= lambda x: x['uid'])
print(e) # {'fname': 'John', 'lname': 'Cleese', 'uid': 1001}
Reference:https://blog.csdn.net/weixin_44038167/article/details/103624245