py编程技巧-1.4-如何根据字典中值的大小对于字典中的项排序

实际案例:
某班英语成绩以字典形式存储为{'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 dic

skey = sorted(dic)
print skey

print 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的key传值

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值