如何對python的字典進行排序

2022-10-04 14:06:26 字數 1989 閱讀 5400

我們知道python的內建dictionary資料型別是無序的,通過key來獲取對應的value。可是有時我們需要對dictionary中 的item進行排序輸出,可能根據key,也可能根據value來排。到底有多少種方法可以實現對dictionary的內容進行排序輸出呢?下面摘取了 一些精彩的解決辦法。

python對容器內資料的排序有兩種,一種是容器自己的sort函式,一種是內建的sorted函式。

sort函式和sorted函式唯一的不同是,sort是在容器內(in-place)排序,sorted生成乙個新的排好序的容器。

1 按照key值排序

#最簡單的方法,這個是按照key值排序:

def sorteddictvalues1(adict):

items = adict.items()

items.sort()

return [value for key, value in items]

#又乙個按照key值排序,貌似比上乙個速度要快點

def sorteddictvalues2(adict):

keys = adict.keys()

keys.sort()

return [dict[key] for key in keys]

#還是按key值排序,據說www.cppcns.com更快。。。而且當key為tuple的時候照樣適用

def sorteddictvalues3(adict):

keys = adict.keys()

keys.sort()

return map(adict.get, keys)

#一行語句搞定:

[(k,di[k]) for k in sorted(di.keys())]

#用sorted函式的key引數(func)排序:

#按照key進行排序

print sorted(dict1.items(), key=lambda d: d[0])

2 按照value程式設計客棧值排序

#來乙個根據value排序的,先把item的key和value交換位置放入乙個list中,再根據list每個元素的第乙個值,即原來的value值,

排序:

def sort_by_value(d):

items=d.items()

backitems=[[v[1],v[0程式設計客棧]] for v in items]

backitems.sort()

return [ backitems[i][1] for i in range(0,len(backitems))]

#還是一行搞定:

[ v for v in sorted(di.values())]

#用lambda表示式來排序,更靈活:

sorted(d.items(), lambda x, y: cmp(x[1], y[1])), 或反序:

程式設計客棧sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=true)

#用sorted函式的key引數(func)排序: # 按照value進行排序

print sorted(dict1.items(), key=lambda d: d[1])

知識點擴充套件:

準備知識:

在python裡,字典dictionary是內建的資料型別,是個無序的儲存結構,每一元素是key-value對:

如:dict = ,其中'username'和'database'是key,而'password'和'master'是value,可以通過d[key]獲得對應值value的引用,但是不能通過value得到key。

對於dictionnary,需知道以下幾點注意事項:

a、 dictionary 的 key 是大小寫敏感的;

b、 乙個dictionary中不能有重複的 key;

c、 dict程式設計客棧ionary是無序的,沒有元素順序的概念,它們只是序偶的簡單排列。

Python中如何對字典按值的大小進行排序

例如某個班級的數學成績如下 dict points 我們需要對該字典進行輸出列印,要求是按分數從高到低輸出 首先將該字典的每個item轉化為元組的 value,key 形式,例如 87,小紅 將每個item轉收集並放入列表li中 用max 方法獲取值最大的元組,遍歷列表lili for key in...

python 對字典進行排序

import itertools thekeys b a c thevalues bbb aaa cccc d dict itertools.izip thekeys,thevalues 建立字典 print d def sorteddictvalue adict keys adict.keys k...

python 對字典進行排序

python字典是無序的型別,有時候有需要對字典按照鍵或者按照值進行排序。為了完成排序。將字典值取出來寫到列表中再排序的方法是很愚蠢的。可以使用sorted函式來實現這個功能即sorted dict,value,reverse 需要匯入operator庫 如下 import operator dic...