Python3之字典生成器结合lambda实现按key/value排序

本文详细介绍了如何使用Python的lambda表达式和字典生成器进行字典排序,包括按value和key排序的方法,并展示了如何将排序后的结果转换为字典。

Python3之字典生成器结合lambda实现按key/value排序

1、先介绍不常见的字典按value排序:

dict1 = {"g": 2, "f": 1, "a": 6}
print(dict1.values())
d1 = sorted(dict1.items(), key=lambda d: d[1], reverse=True)    # 按字典values倒序排序
d2 = sorted(dict1.items(), key=lambda d: d[1])   # # 按字典values正序排序
print(d1)
print(d2)

输出:
[('a', 6), ('g', 2), ('f', 1)]
[('f', 1), ('g', 2), ('a', 6)]
解释:d[1]表示按字典的value排序,若是0则按字典的key排序(文末有示例),大概的意思就是相当于for遍历dict1.items(),那么每次遍历key是第一个(索引0),value是第二个(索引1)。
然后这里返回的是列表,列表中包含多个元组

2、如果想返回字典,可以借用字典生成器:

dict1 = {"g": 2, "f": 1, "a": 6}
d1 = {i[0]: i[1] for i in sorted(dict1.items(), key=lambda d: d[1])}

输出:
{'f': 1, 'g': 2, 'a': 6}
解释:
sorted(dict1.items(), key=lambda d: d[1])还是跟上面一样,只是多了个字典生成器,它跟列表生成式差不多,i[0]是key,而i[1]是value

3、如果要按key排序
将标号1中d[1]改为d[0]即可:

dict1 = {"g": 2, "f": 1, "a": 6}
d1 = {i[0]: i[1] for i in sorted(dict1.items(), key=lambda d: d[0])}
print(d1)

out:
{'a': 6, 'f': 1, 'g': 2}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值