您的位置:首页 > 其它

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

2017-07-16 13:08 183 查看
案例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)]


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: