python【4】根据字典中值的大小,对字典的键进行排序

案例 以字典来储存某些数据,比如学生成绩,各楼盘房价等 {'a':'29','b':'34','c':'30'}按照值的大小进行排序成{'b':34,'c':30,'a':29}

我们知道 字典是无序的,键也是唯一的,值可以重复。查找字典中的数据时按照字典的键进行查找的。

涉及到排序问题,首先想到了python的内置函数sorted ,比如 对列表进行排序 ,像这样:

from random import randint 
list=[randint(10,50) for x in range(6)]
print(list)
print(sorted(list))

排序的结果是对列表按照从小到大来排列

那么是不是也可以使用sorted方法对字典进行排序呢  来试一下:

结果是这样的 ,只对字典的键进行了排序 ,是按照键的ASCii码来排列的 ,不是按照值,何况结果中连值都没有展示出来。

所以直接使用sorted 函数对字典按照值得大小来排序是行不通的 。那么 需要展示的结果应该是包含值和键的 ,想到了元组(a,34)>(a,35)  对元组进行比较大小 ,而如果把键放在第一个的话,还是比较的键的大小,而不是值,所以 需要把值放在第一个,键放在后面。思路来了,把字典的数据转换为元祖  使用zip函数。zip(值,键),

想得到字典的值和键 非常简单 即d.keys()和d.values() 

zip(d.values(),d.keys())就把字典数据转换成了元组数据。

代码如下  结果如下:

奇怪,打印出来的排序结果为什么是是这样一串东西呢 ,因为用的解释器的版本是3.6  对zip的用法做了修改,可以看到返回的是一个对象,如果想要得到list可以用list(b),进行强转,得到想要的结果。如下:

看 这样就按照字典的大小顺序来进行排列的。

 

 

  • 8
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值