# -*- 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)]
2-4根据字典中值的大小,对字典中的项排序
最新推荐文章于 2024-09-09 10:12:36 发布
本文介绍如何在Python中根据字典值的大小对字典进行排序,讲解了使用内置函数sorted()结合lambda表达式的排序方法。
3554

被折叠的 条评论
为什么被折叠?



