数据结构与算法相关问题(二)------根据字典中值的大小,对字典中的项排序

实际案例

某班英语成绩以字典形式存储

{

  ‘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)}

 

posted @ 2020-03-15 01:21  覆水难收d  阅读(122)  评论(0编辑  收藏  举报