Python3 字典dict 排序

2021-09-28 14:17:05 字數 2517 閱讀 5147

首先說明一點:python的dict這個東西是沒辦法按照指定順序的key存的

一、按key排序:

1,直接從dict輸出,只要保證輸出結果的順序是按key排序就可以了

2,按key儲存為其他一種資料格式(比如list, 或者 collections.ordereddict)之後,進行輸出。這樣輸出的結果的順序也可以被固定,比如固定為按key排序

# 方法2:轉成list

>>> c =

# 方法1:

>>> keys = c.keys()

>>> keys.sort() # 這是一種排序。相當於設定乙個固定的列表來儲存key的順序

>>> output_list = [(key, c[key]) for key in keys]

# 輸出的結果是按照特定排序的

>>> output_list

[('a', 2), ('b', 1)]

# 方法3:使用sorted函式。沒有嘗試過。參考:

# 類似於按手動設定的權重輸出(手動設定順序)?

dic = # 想要按照這裡的姓名順序輸出

in [172]: dic

out[172]:

in [173]: def mycmp(x,y):

.....: d =

.....: x = d[x]

.....: y = d[y]

.....: if x > y:

.....: return 1

.....: elif x == y:

.....: return 0

.....: else:

.....: return -1

.....:

in [174]: dic.items()

out[174]: [('jessica', 80), ('mary', 70), ('lee', 100), ('tom', 90)]

in [175]: sorted(dic.items(),cmp=mycmp,key=lambda x:x[0])

out[175]: [('lee', 100), ('tom', 90), ('jessica', 80), ('mary', 70)]

in [176]: for item in sorted(dic.items(),cmp=mycmp,key=lambda x:x[0]):

.....: print item[0],item[1]

ps:

# dict組成的字串,按照字串中dict中key的順序輸出或者儲存。使用collections.ordereddict

參考:

>>> c = 

# 正常情況,只要輸出c,肯定都是 , 怎麼輸出都是這樣。無法按照原樣輸出。

>>> c

# 只有輸入是dict組成的字串時,ordereddict方法才起作用

>>> c = ''

# 使用json和ordereddict

>>> import json

>>> from collections import ordereddict

>>> c = json.loads(c, object_pairs_hook=ordereddict)

>>> for key in c:

... print(key, c[key])

...('b', 1)

('a', 2)

# c = json.dumps(c) # 可以把乙個字典格式轉換為字串格式,和str(c)略有差別,如下:

>>> c =

>>> str(c)

"">>> c =

>>> json.dumps(c)

''# json.dumps:作用是將字典轉換為字串。json.loads: 作用是將字串轉換為json(dict)。

已經被字典排序坑很久了:

二、按value排序

>>> a = 

>>> sorted(a.items(), key=lambda item:item[1])

[(2, 23), (3, 44), (1, 1112)]

lambda表示式語法:冒號左邊是輸入引數,右邊是運算的表示式。即輸入是dict的item,輸出是value,然後將value作為key給sorted函式進行排序。

----------------------因為python中dict無法保證一定按照特定順序的key進行儲存,以下方法不穩定,不要使用!!!--------------------

方法1:用python自帶的sorted

# 正向排序

>>> dict1 =

>>>

# 輸出:

# 反向排序

>>>

# 輸出:

為什麼反向輸出不是正好相反的順序呢??

參考:

Python3基礎5 字典dict

字典 dict 符號 大括號 花括號 無序 1 可以存在空字典a 2 字典裡面資料儲存的方式 key value 3 字典裡面value可以包含任何型別的資料 4 字典裡面的元素 根據逗號來進行分隔 5 字典裡面的key必須是唯一的 a 字典取值 字典 key print a t age 20刪除 ...

python3字典排序

說實話,對字典進行排序,這個說法本身就有問題,實際上,你無法對操縱字典說,字典,在你的底層實現裡,你就得按照我指定的順序來排列,如果這樣的話,字典就喪失了它的速度優勢,它也不是乙個字典了.好了,廢話不多說,我這裡稍微記錄一下我的做法吧.python2裡面原來是有dict.iteritems這樣乙個函...

python3字典遍歷 python3字典遍歷

python版本 python3.7 info infog.get name 得到字典info中name的值 info.keys 得到字典info中所有的鍵,結果是乙個物件 dict keys name age 需要注意在python2中該操作得到的是乙個列表 遍歷key for temp in i...