如何在 Python 中按鍵對字典排序
Azaz Farooq
2023年10月10日
-
Python 用
dict.keys()
方法對字典按鍵排序 -
Python 用
dict.items()
方法按鍵對字典進行排序 -
Python 用
OrderedDict()
方法按 key 對字典進行排序 - Python 按反向順序對字典進行排序
-
Python 用自定義
key
函式方法排序字典
Python 字典和雜湊表一樣,通過評估鍵的雜湊值來儲存條目,條目的順序是無法預測的。本文將介紹如何在 Python 中按鍵對字典進行排序。
Python 用 dict.keys()
方法對字典按鍵排序
讓我們以下面的字典為例。
dict = {"hello": 56, "at": 23, "test": 43, "this": 43}
dict.keys()
的輸出是
dict_keys(["hello", "at", "test", "this"])
我們可以從這個無序的鍵列表中建立一個新的、有序的字典。
sorted(dict.keys())
輸出:
['at', 'hello', 'test', 'this']
通過從字典中選擇每個條目,我們可以對該排序列表重複進行排序。
for key in sorted(dict.keys()):
print(key, " :: ", dict[key])
輸出:
at :: 23
hello :: 56
test :: 43
this :: 43
Python 用 dict.items()
方法按鍵對字典進行排序
我們也可以在 Python 中用 dict.items()
方法按鍵對一個字典進行排序。
它將生成一個包含鍵值對的列表?
dict.items()
輸出:
dict_items([('hello', 56), ('at', 23), ('test', 43), ('this', 43)])
我們可以通過下面的函式生成一個排列好的列表。它將根據鍵值對字典的條目進行排序。
sorted(dict.keys())
輸出:
['at', 'hello', 'test', 'this']
現在,為了從字典中產生排序鍵值對,我們使用以下程式碼。
for elem in sorted(dict.items()):
print(elem[0], " ::", elem[1])
輸出:
at :: 23
hello :: 56
test :: 43
this :: 43
在複雜性方面,它比前面的方法更強大。因為我們在對可迭代列表進行排序後,不需要像 dict.key()
那樣檢查鍵值。
Python 用 OrderedDict()
方法按 key 對字典進行排序
另外,我們也可以使用 collections
模組對字典元素進行鍵值排序。
import collections
d = {2: 13, 1: 9, 4: 25, 3: 0}
result = collections.OrderedDict(sorted(d.items()))
print(result)
輸出:
OrderedDict([(1, 9), (2, 13), (3, 0), (4, 25)])
Python 按反向順序對字典進行排序
之前,我們按升序對字典項進行了排序。現在我們討論一些按降序排列字典項的方法。
語法為:
sorted(iterable_sequence, reverse=True)
以下程式碼對字典項進行排序和反轉。
dict = {"hello": 56, "at": 23, "test": 43, "this": 43}
for elem in sorted(dict.items(), reverse=True):
print(elem[0], " ::", elem[1])
引數 reverse=true
確保排序後的字典是反向的。
輸出:
this :: 43
test :: 43
hello :: 56
at :: 23
Python 用自定義 key
函式方法排序字典
該方法將通過使用 key
字串的長度對字典元素進行排序。
sorted(iterable_sequence, key=Function)
返回字串大小的 lambda
函式被賦予 key
引數。
listofTuples = sorted(dict.items() , key=lambda x: len (x[0] ) )
for elem in listofTuples :
print(elem[0] , " ::" , elem[1] )
輸出:
at :: 23
test :: 43
this :: 43
hello :: 56