Python根据字典中的值排序

1、如何根据字典中值的大小,对字典中的项排序

        实际案例:

                某班英语成绩以字典形式存储为:{'LiLei': 79, 'Jim': 88, 'Lucy': 92, ...}

                根据成绩高低,计算学生排名。

                注:字典的键就是学生名字,字典的值是学生分数。

        解决方案:

                使用内置函数sorted

                方法1:利用zip将字典数据转换成元组列表

                方法2:传递给sorted函数的key参数

2、代码演示

# 使用sorted对列表进行排序
print(sorted([9, 1, 2, 8, 5]))

from random import randint

# 创建随机的成绩表,使用字典解析
c = {x: randint(60, 100) for x in 'abcded'}
print(c)
print(sorted(c))
# 方法1:
'''
直接使用sorted对字典排序,并不是按照值进行排序的,而是按照键。
sorted()传入的是可迭代对象,对于字典进行某种转换,让它变成sorted可以排序的结构。
将字典转换成元组列表,如: [(97, 'a'), (69, 'b')],然后直接比较元组第一个值
'''
# 得到字典所有健或所有的值
# print(c.keys())
# print(c.values())
# 使用zip函数,将两个列表拼起来变成一个列表,因为返回的是一个对象所以使用list()函数转换一下
print(list(zip(c.values(), c.keys())))
# 然后对合成的元组列表进行排序
print(sorted(zip(c.values(), c.keys())))

# 方法2:
# 将字典的k:v以元组列表的形式返回
print(c.items())
# 设置sorted的key参数为字典的value
print(sorted(c.items(), key=lambda x: x[1]))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值