HOWTO · Python

在 Python 中將字典轉換為列表

本文介紹如何在 Python 中將字典轉換為列表。

本頁內容

Python 字典會儲存鍵值配對。「將字典轉換為列表」可能指三種不同結果:鍵的列表、值的列表,或 (key, value) 元組的列表。請依照後續操作所需選擇結果形式,再將對應的字典檢視物傳入 list(),將其轉換為列表。

選擇要轉換字典中的哪個部分

若列表應包含字典的鍵,請使用 keys();若要包含值,請使用 values();若要包含鍵值配對,請使用 items()。以下範例都使用同一個字典。請在自己的環境中執行各個 Python 範例,查看結果。

將字典的鍵和值轉換為列表

keys() 和 values() 都是字典方法。在 Python 3 中,它們會提供檢視物,再由 list() 將檢視物轉換為列表。鍵和值的列表會依照字典的迭代順序排列,而且各位置的鍵和值彼此對應。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

dictionary = {"a": "Apple", "b": "Banana", "c": "Cherries", "d": "Dragon Fruit"}

keys = list(dictionary.keys())
values = list(dictionary.values())

print(type(dictionary.keys()))
print(keys)
print(values)

使用 list(dictionary) 可以更精簡地建立鍵的列表。若明確寫出方法名稱能讓意圖更清楚,則可使用 list(dictionary.keys())。如果只需要逐一處理鍵或值,可以直接迭代檢視物,無須另外建立列表。

將字典項目轉換為元組列表

若要取得鍵值配對,請呼叫 items(),並將它傳回的檢視物交給 list()。結果列表中的每個元素都是雙項元組:第一項是鍵,第二項是對應的值。

本節中的程式碼以及顯示的標籤或輸出仍為英文。

dictionary = {"a": "Apple", "b": "Banana", "c": "Cherries", "d": "Dragon Fruit"}

pairs = list(dictionary.items())
print(type(dictionary.items()))
print(pairs)

需要取得配對時,這是直接的做法。zip(dictionary.keys(), dictionary.values()) 也能將同一個字典的兩個序列配成一對,但對這項工作沒有額外好處;若輸入來自不同來源,也更容易誤用。一般要取得字典的鍵值配對時,優先使用 items()。

了解 Python 3 字典檢視物與排序

在 Python 3 中,keys()、values() 和 items() 傳回的是檢視物,而不是列表。檢視物適合用來迭代;需要列表時,再用 list() 建立獨立列表。範例中的型別檢查可看出檢視物與轉換後列表之間的差異。

範例依照字典的迭代順序顯示項目,且鍵和值會彼此對應。如果需要不受字典建立方式影響的特定順序,請明確排序,例如先排序鍵再使用。不要把另一個字典中顯示的順序,當成已定義好目前工作所需順序的依據。

處理 Python 2 相容性

iteritems() 是 Python 2 的舊式字典方法。它不同於上方的 Python 3 items() 範例;下方的舊式語法僅供說明,請勿將它當成 Python 3 程式碼執行:

pairs = list(dictionary.iteritems())(僅適用於 Python 2 的示意語法,不是 Python 3 範例。)

在 Python 3 中,請使用 list(dictionary.items())。文章提供的舊式範例不足以支持任何特定的 Python 2 排序或型別顯示,因此不列出這些細節。若要維護舊的 Python 2 程式碼,請在你支援的確切直譯器與程式碼庫中確認行為,不要假設 Python 3 範例可以直接套用。