如何按值對字典排序
Jinku Hu
2023年1月30日
- 只獲取已排序的值列表
-
使用
operator.itemgetter
對字典排序 -
使用
lambda
函式作為sorted
函式中的比較鍵來對字典排序 -
用
OrderedDict
資料型別來得到跟字典資料型別相容的結果
Python 字典是一種無序資料型別,因此,你無法通過其鍵或值對字典進行排序。但是你可以得到用其他資料型別表示的 Python 字典排序的結果,例如可以用列表來表示字典排序的結果。
假設我們有一個如下的字典,
exampleDict = {"first": 3, "second": 4, "third": 2, "fourth": 1}
只獲取已排序的值列表
sortedDict = sorted(exampleDict.values())
# Out: [1, 2, 3, 4]
使用 operator.itemgetter
對字典排序
import operator
sortedDict = sorted(exampleDict.items(), key=operator.itemgetter(1))
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]
exampleDict.items
返回字典元素的鍵值對。key=operator.itemgetter(1)
指定比較鍵是字典的值,類似的,operator.itemgetter(0)
會指定比較鍵為字典的鍵。
使用 lambda
函式作為 sorted
函式中的比較鍵來對字典排序
你也可以使用 lambda
方程來作為比較鍵而不是用 operator.itemgetter
做鍵值。
sortedDict = sorted(exampleDict.items(), key=lambda x: x[1])
# Out: [('fourth', 1), ('third', 2), ('first', 3), ('second', 4)]
exampleDict.items()
返回字典的鍵值對列表,其元素的資料型別為元組。x
是這個元組的元素,其中 x[0]
是鍵,x[1]
值是值。 key=lambda x:x[1]
表示比較鍵是字典元素的值。
用 OrderedDict
資料型別來得到跟字典資料型別相容的結果
上面示例程式碼的結果是列表,而不是字典型別。如果要將結果保持為字典相容型別,那從 Python 2.7 開始引入的 OrderedDict
是一個不錯的選擇。
from collections import OrderedDict
sortedDict = OrderedDict(sorted(exampleDict.items(), key=lambda x: x[1]))
# Out: OrderedDict([('fourth', 1), ('third', 2), ('first', 3), ('second', 4)])
OrderedDict
型別是 Python 字典 dict
的一個子類,它支援字典的常見方法,也能記住元素被插入的順序。
作者: Jinku Hu