本文共 973 字,大约阅读时间需要 3 分钟。
实际案例:
某班英语成绩以字典形式存储为{'mtianyan',100,'tudou':'100','shabi':59} 根据成绩高低计算学生排名
解决方案:
使用内置函数sorted(内置函数以c的速度运行) 1. 利用zip将字典数据转换为元组 2. 传递sorted函数的key参数a = sorted([9,1,2,8,5])print a
from random import randint#使用字典解析创建成绩表dic = { x:randint(60,100) for x in 'abcdefg'}print dicskey = sorted(dic)print skeyprint iter(dic)print list(iter(dic))# 将字典进行转换变成sorted可以排序的print (97,'a') > (69,'b')print (97,'a') > (97,'b')print dic.keys()print dic.values()print zip(dic.keys(),dic.values())#进行优化内存使用可迭代对象print zip(dic.itervalues(),dic.iterkeys())print sorted(zip(dic.itervalues(),dic.iterkeys()))
sorted 传入三个参数:
1:一个可迭代的对象 2:key值:这里传入一个lambda匿名函数。取出每个迭代项的values 3:reverse:正序还是倒序:默认为False从小到大
print dic.items()# 从小到大排列print sorted(dic.items(), key=lambda x:x[1])# 从大到小排列print sorted(dic.items(), key=lambda x:x[1],reverse =True)##优化内存版本# 从小到大排列print sorted(dic.iteritems(), key=lambda x:x[1])# 从大到小排列print sorted(dic.iteritems(), key=lambda x:x[1],reverse =True)
转载地址:http://gjzxx.baihongyu.com/