用 Python 將兩個列表轉換為字典

Rayven Esplanada 2021年4月29日 2021年1月22日 Python Python List Python Dictionary
  1. 在 Python 中使用 zip()dict() 把兩個列表轉換為字典
  2. 在 Python 中使用字典推導法將列表轉換為字典
  3. 在 Python 中使用 for 迴圈將列表轉換為字典
用 Python 將兩個列表轉換為字典

本教程將介紹如何在 Python 中把兩個列表轉換為字典,其中一個列表包含字典的鍵,另一個包含值。

在 Python 中使用 zip()dict() 把兩個列表轉換為字典

Python 有一個內建函式 zip(),它將可迭代的資料型別聚合成一個元組並返回給呼叫者。函式 dict() 從給定集合中建立一個字典。

key_list = ['name', 'age', 'address']
value_list = ['Johnny', '27', 'New York']

dict_from_list = dict(zip(key_list, value_list))
print(dict_from_list)

在這個解決方案中,只需使用一行和兩個函式就可以將列表轉換為字典。

輸出:

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

在 Python 中使用字典推導法將列表轉換為字典

字典推導是一種縮短 Python 中建立字典的初始化時間的方法。理解是對 for 迴圈的一種替代,後者需要多行和變數。理解式在一行中就完成了初始化的工作。

在這個解決方案中,函式 zip() 仍然會向字典推導提供值。理解將把函式 zip() 的返回值內的每個連續元素的鍵值對作為字典返回。

key_list = ['name', 'age', 'address']
value_list = ['Johnny', '27', 'New York']

dict_from_list = {k: v for k, v in zip(key_list, value_list)}
print(dict_from_list)

另一種將列表轉換為字典的方法是利用列表的索引,使用 range() 函式對兩個列表進行迭代,並使用 comprehension 從列表中建立一個字典。

它假設鍵列表和值列表的長度是相同的。在這個例子中,鍵列表的長度將是範圍的基礎。

key_list = ['name', 'age', 'address']
value_list = ['Johnny', '27', 'New York']

dict_from_list = {key_list[i]: value_list[i] for i in range(len(key_list))}
print(dict_from_list)

這兩種理解方案都會提供與前一個例子相同的輸出。

這兩個解決方案之間唯一的區別是,一個使用 zip() 函式將列表轉換為元組。另一個使用 range() 函式使用當前索引迭代兩個列表,形成一個字典。

輸出:

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

在 Python 中使用 for 迴圈將列表轉換為字典

實現列表到字典轉換的最直接的方法就是迴圈。雖然這種方法效率最低,也最冗長,但它是一個很好的開始,特別是當你是一個初學者,想領悟更多的基本程式設計語法的時候。

在迴圈之前,先初始化一個空字典。之後,繼續進行轉換,這將需要一個巢狀迴圈;外迴圈將迭代鍵列表,而內迴圈將迭代值列表。

key_list = ['name', 'age', 'address']
value_list = ['Johnny', '27', 'New York']

dict_from_list = {}
for key in key_list:
  for value in value_list:
    dict_from_list[key] = value
    value_list.remove(value)
    break

print(dict_from_list)

每次形成鍵值對時,都會從列表中刪除值元素,這樣下一個鍵就會被分配下一個值。刪除後,中斷內迴圈,繼續下一個鍵。

另一種使用迴圈的解決方案是使用 range() 來利用索引來獲取鍵和值對,就像在字典推導的例子中所做的那樣。

key_list = ['name', 'age', 'address']
value_list = ['Johnny', '27', 'New York']

dict_from_list = {}
for i in range(len(key_list)):
  dict_from_list[key_list[i]] = value_list[i]

print(dict_from_list)

這兩種解決方案都會產生相同的輸出。

{'name': 'Johnny', 'age': '27', 'address': 'New York'}

總而言之,將兩個列表轉換為字典的最有效方法是使用內建函式 zip() 將兩個列表轉換為元組,然後使用 dict() 將元組轉換為字典。

使用字典推導也可以使用 zip() 將列表轉換為元組,或者使用 range(),利用列表的索引來迭代和初始化字典,將列表轉換為字典。

與樸素的解決方案相比,這兩個解決方案是更好的解決方案,樸素的解決方案使用普通迴圈將列表轉換為字典。

相關文章 - Python List

  • 在 Python 中將字典轉換為列表
  • 從 Python 列表中刪除某元素的所有出現
  • 在 Python 中從列表中刪除重複項
  • 如何在 Python 中獲取一個列表的平均值
  • Python 列表方法 append 和 extend 之間有什麼區別
  • 如何在 Python 中將列表轉換為字串
  • 相關文章 - Python Dictionary

  • 如何檢查 Python 字典中是否存在某鍵
  • 在 Python 中將字典轉換為列表
  • Python 如何得到資料夾下的所有檔案
  • 在 Python 字典中尋找最大值
  • 如何按值對字典排序
  • 如何在 Python 2 和 3 中合併兩個字典