【Python笔记】itemgetter字典排序


通过某个关键字排序一个字典列表

方法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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值