python建立有序字典及字典按照值的大小进行排序

有序字典

  在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])
"""
相关文章
相关标签/搜索