關於字典排序


1.字典的鍵值是沒有順序的,所以無法像列表和元組一樣通過索引來訪問元素。

現在有個方法可以讓字典記錄條目添加的順序:用到OrderedDict

from collections import OrderedDict

OrderedDict是個dict的子類,所以可以像dict一樣引用它,同時它又增加了對添加順序的記錄。

d=OrderedDict()相當於d={}創建了一個有記錄功能的指針
2.對字典的鍵值排序
對鍵:

 

好像只能出來一個鍵的列表

對值:c={"wangshen":100,"linzhitao":98,"qiaoubsi":88}

sd=sorted(c.items(),key=lambda x:x[1])

od=OrderedDict(sd)

print od

 

按“值”排序就是根據字典的值進行排序,可以使用內置的sorted()函數。

 sorted(iterable[, cmp[, key[, reverse]]])
  • iterable:是可迭代類型類型;

  • cmp:用於比較的函數,比較什么由key決定,有默認值,迭代集合中的一項;

  • key:用列表元素的某個屬性和函數進行作為關鍵字,有默認值,迭代集合中的一項;

  • reverse:排序規則. reverse = True 或者 reverse = False,有默認值,默認為升序排列(False)。

返回值:是一個經過排序的可迭代類型,與iterable一樣。一般來說,cmp和key可以使用lambda表達式。

如果對字典進行排序,常用的形式如下:

sorted(dict.items(), key=lambda e:e[1], reverse=True)

其中,e表示dict.items()中的一個元素,e[0]表示按鍵排序,e[1]則表示按值排序。reverse=False可以省略,默認為升序排列。

說明:字典的items()函數返回的是一個列表,列表的每個元素是一個鍵和值組成的元組。因此,sorted(dict.items(), key=lambda e:e[1], reverse=True)返回的值同樣是由元組組成的列表。(所以要用OrderedDict()來把它重新變回字典,注意不能用dict()變,因為這樣變出來的沒有順序)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM