根据字典中值得大小,对字典中的项排序

 

案例1:
某班语文科目的成绩以字典形式存储,形式为:{"lili":89,"wenwen":91 ...}
根据成绩高低,计算学生的排名

解决方案:
使用内置函数sorted
1,利用zip将字典数据转化为元组
2,传递sorted函数的key参数

# eg_v1 利用zip将字典数据转化为元组

from random import randint
stud = {x:randint(60,100) for x in "abcdefghjk"} # 创建随机的成绩单字典
print(stud)
# {'a': 89, 'b': 87, 'd': 83, 'j': 97, 'e': 74, 'f': 75, 'h': 97, 'g': 61, 'c': 62, 'k': 90}
print(stud.keys()) # 得到字典的键
# dict_keys(['a', 'b', 'd', 'j', 'e', 'f', 'h', 'g', 'c', 'k'])
print (stud.values()) # 得到字典的值
# dict_keys(['a', 'b', 'd', 'j', 'e', 'f', 'h', 'g', 'c', 'k'])

z = zip(stud.values(),stud.keys())
print (sorted(z))
# [(61, 'g'), (62, 'c'), (74, 'e'), (75, 'f'), (83, 'd'), (87, 'b'), (89, 'a'), (90, 'k'), (97, 'h'), (97, 'j')]

  

# eg_v2 传递sorted函数的key参数

from random import randint

rest = {x:randint(60,100) for x in "abcdefghjk"} # 创建随机的成绩单字典
print (rest)
# {'h': 96, 'j': 95, 'b': 97, 'g': 78, 'f': 64, 'k': 81, 'd': 72, 'e': 69, 'c': 93, 'a': 61}
print (rest.items())
# dict_items([('h', 96), ('j', 95), ('b', 97), ('g', 78), ('f', 64), ('k', 81), ('d', 72), ('e', 69), ('c', 93), ('a', 61)])
result = sorted(rest.items(),key = lambda x:x[1])
print (result)
# [('a', 61), ('f', 64), ('e', 69), ('d', 72), ('g', 78), ('k', 81), ('c', 93), ('j', 95), ('h', 96), ('b', 97)]

  

 

posted @ 2017-07-16 13:08  xie仗剑天涯  阅读(1346)  评论(0编辑  收藏  举报