python下多字典的排序,排序键值控制

python中的字典是经常操作的数据结构,在数据处理的过程中通常需要对数据进行排序,python中的字典已经为我们准备好了排序的关键字sorted

sorted(iterable ,key,reverse) 函数:

  • iterable -- 可迭代对象。

  • key:按照哪个规则进行排序,

  • reverse:True为降序,False为升序(默认)

对字典进行排序,先把字典归为数组,iteritems 化为数组,key 使用到的是lambda 语法,代表作每个传递过来的对象,我们在这里传递的是一个([0],[1])的元组,dr[1] 就代表了 字典中的vaule。 如下:

d = {'qq':536,'weixin':600,'taobo':456}
print sorted(d.iteritems(),key=lambda dr:dr[1],reverse=True)

对字典d 进行排序,得到的结果如下:

[('weixin', 600), ('qq', 536), ('taobo', 456)]

进一步在来看这样的排序:

d = {'qq':{'downlaod':536,'views':60},'weixin':{'downlaod':600,'views':90},'taobo':{'downlaod':456,'views':100}}

d 扩展出去,分别有downlaodviews 值,在lambda中我们传递的是 ('qq',{'downlaod':536,'views':60} )字典,所有如果要对views 进行排序,应该这样来写:

d = {'qq':{'downlaod':536,'views':60},'weixin':{'downlaod':600,'views':90},'taobo':{'downlaod':456,'views':100}}
print sorted(d.iteritems(),key=lambda dr:dr[1]['views'],reverse=True)

得到的结果如下:

[('taobo', {'downlaod': 456, 'views': 100}), ('weixin', {'downlaod': 600, 'views': 90}), ('qq', {'downlaod': 536, 'views': 60})]

因此只要知道传递的是什么样的参数,就能够根据里面的数据结构进行排序。

转载请标明来之:http://www.bugingcode.com/

更多教程:阿猫学编程