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])
"""
相關文章
相關標籤/搜索