字典排序

Posted 去做点事情

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典排序相关的知识,希望对你有一定的参考价值。

 sorted函数默认是按从小到大排序的,如果要从大到小排序,就需要将reverse设置为True。

 字典的值是不具有可迭代性的,只有他的键可迭代,所以可以直接对键进行排序,但不能对值进行排序:

dic = {a:3 , b:5, c: 1}
a = sorted(dic, reverse=True)
print a

或者
a = sorted(dic.keys(),reverse=True)

要想对值进行排序,就必须将字典转换乘键值的可迭代,而不仅仅是键的可迭代。所以用iteritems生成一个可迭代的对象

>>> sorted(dict1.iteritems(), key=lambda A:A[0], reverse=True)        对键排序
[(Shanghai, 40), (Guangzhou, 29), (Beijing, 34)]  
>>> sorted(dict1.iteritems(), key=lambda A:A[1], reverse=True)        对值排序
[(Shanghai, 40), (Beijing, 34), (Guangzhou, 29)]  

 也可以用items生成

dic = {a:3 , b:5, c: 1}
a = sorted(dic.items(), key=lambda A:A[0], reverse=True)
print a

注意:第一个参数把每个键值对传给key所在的匿名函数,然后经过函数处理生成新的元祖然后再用sorted函数排序。iteritems让字典变为可迭代,然后一个一个传给key,而不是把整个字典传给key,不会像list中[0]表示取第一个元素(因为那是针对lsit整体),这也就是可迭代的意义所在。

 

以上是关于字典排序的主要内容,如果未能解决你的问题,请参考以下文章

Python代码阅读(第19篇):合并多个字典

Python代码阅读(第26篇):将列表映射成字典

Python代码阅读(第40篇):通过两个列表生成字典

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

初识Spring源码 -- doResolveDependency | findAutowireCandidates | @Order@Priority调用排序 | @Autowired注入(代码片段

什么是字典排序