在Python中,字典类型里面的元素默认是无序的,可是咱们也能够经过collections模块建立有序字典python
# -*- coding:utf-8 -*- # python有序字典需导入模块collections import collections # 经过OrderedDict类建立的字典是有序的 dic = collections.OrderedDict() dic['k1'] = 'v1' dic['k2'] = 'v2' dic['k3'] = 'v3' print(dic) """ 相似经过列表的方式来实现字典有序 建立列表,添加列表元素k1时,再将k1做为字典的键, 由于列表是序的,因此遍历列表就可有序的遍历出字典全部的key """ dic = {'K1': 'V1', 'K2': 'V2', 'K3': 'V3'} li = ['k1', 'k2', 'k3']
首先咱们生成一个随机字典dom
from random import randint d={x:randint(60,99) for x in "abcdefg"} # {'a': 62, 'b': 97, 'c': 87, 'd': 68, 'e': 91, 'f': 76, 'g': 88}
第一种方式:利用collections的子类Counter从大到小排序函数
c=Counter(d).most_common() #返回一个列表,按照dict的value从大到小排序 print(c)# 返回值是一个list,list里面的元素是tuple的形式
第二种方式:sorted函数spa
能够对列表[]进行从小到大排序,对于字典{}dict,sorted函数默认只按照dict的key进行排序,因此要对dict进行调整变形。 code
一、利用zip函数把dict转换成一个列表,列表中每一个元素都是一个tuple,tuple大小比较原理是,先比较第一个元素,第一个相同在比较第二个。 blog
二、利用sorted函数对转换后的列表进行排序。排序
z=zip(d.values(),d.keys()) #[(62, 'a'), (97, 'b'), (87, 'c'), (68, 'd'), (91, 'e'), (76, 'f'), (88, 'g')],而后对这个列表进行sorted排序 sorted(z)
第三种方式:sorted + lambdaip
sorted函数能够这种集合进行指定元素排序。 utf-8
sorted(d.items(),key=lambda x:x[1]) """ 第一个参数是须要排序的列表,第二个参数是指定key(列表中每一项的第几个元素)来进行排序。 解释这句代码:d.items()返回的是一个列表 [('a', 74), ('b', 90), ('c', 84), ('d', 85), ('e', 64), ('f', 66), ('g', 88)] sorted会对d.items()这个list进行遍历,把list中的每个元素,也就是每个tuple()当作x传入匿名函数lambda x:x[1],函数返回值为x[1], 也就是key=x[1]=tuple()[1]=('a', 74)[1],也就是说按照里表中每一个项的第二个元素进行排序(第一个是想x[0]) """