2-4根据字典中值的大小,对字典中的项排序

本文介绍如何在Python中根据字典值的大小对字典进行排序,讲解了使用内置函数sorted()结合lambda表达式的排序方法。
# -*- coding:utf-8 -*-

from random import randint

d = {x: randint(60, 100) for x in 'xyzabc'}

# 问题如下:
sorted(d)
# ['a', 'b', 'c', 'x', 'y', 'z']
# sorted()只是将字典中的键排了序

# 将字典转化成可迭代对象
iter(d)
# <dictionary-keyiterator object at 0x7f56eb4999f0>
list(iter(d))
# ['a', 'c', 'b', 'y', 'x', 'z']
# 转化成list对象,发现没有了键值,只剩了键



# 解决方案1(zip : 将字典数据转化为元组):

# >>> (97, 'a') > (69, 'b')
# True
# >>> (97, 'a') > (97, 'b')
# False

print sorted(zip(d.itervalues(), d.iterkeys()))
# 等价于zip(d.values(), d.keys()),但是前者更节省存储空间
# 结果:[(76, 'y'), (86, 'a'), (86, 'b'), (87, 'c'), (94, 'x'), (100, 'z')]


# 解决方案2(传递sorted()函数的key参数)
print sorted(d.items(), key = lambda x: x[1])
# 结果:[('z', 60), ('x', 64), ('b', 86), ('a', 88), ('y', 88), ('c', 91)]




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值