数据结构与算法相关问题(二)------根据字典中值的大小,对字典中的项排序
实际案例
某班英语成绩以字典形式存储
{
‘LiLei’: 79,
'Jim': 88,
'Lucy': 92
}
如何根据成绩高低,计算学生排名
解决方案:将字典中各项转换为元组,使用内置函数sorted()排序
将字典中的项转化为(值,键)元组。(列表解析或zip)
grades = {
'LiLei': 79,
'Jim': 88,
'Lucy': 92
}
# 列表解析
print(sorted(grades.items(), key=lambda item: item[1], reverse=True))
# zip
p sorted(zip(grades.values(), grades.keys()))
# 添加次序
for i in (k, v) in enumerate(p, 1):
print(i, k, v)
# 更新原字典
grades[k] = (i, v)
# 生成新字典
{k:(i, v) for i, (k, v) in enumerate(p, 1)}