Python中建立列表字典的方法


Python中的字典是儲存為鍵值對形式的資料集合。我們可以為鍵分配不同型別的資料作為值。它幫助程式設計師儲存資料、分類型別並相應地構建資料庫。

另一方面,列表也儲存資料,但這裡的元素不與多個值關聯。字典和列表都是索引的。在列表中,我們將資料儲存為序列形式,這些序列可以被遍歷和操作。

在本文中,我們將把這兩種格式合併在一起,建立一個列表字典。在我們深入探討主題之前,讓我們快速瀏覽一下這篇文章的概述。

建立字典

對於字典建立,我們使用“{}”花括號。讓我們看看語法:

dict1 = {"Car": "AUDI"}

這裡“Car”是鍵,“AUDI”是鍵值。

建立列表

對於列表建立,我們使用“[]”方括號。讓我們看看語法:

lis1 = ["Name", "age", "gender", "qualification"]

這裡,“Name”、“age”、“gender”、“qualifications”是列表“lis1”的元素。

當我們嘗試組合這些格式來生成列表字典時,這意味著我們必須將列表視為鍵值對。但問題是列表是充當鍵還是值。分配鍵的規則是它應該是“不可變的”或不可更改的。

因此,列表不能充當字典的鍵。因此,在處理列表字典時,我們將列表視為不可變鍵的“值”。

建立列表字典的不同方法

以下標形式賦值列表作為值

在這種方法中,我們直接命名鍵並將它們賦值為值列表。讓我們看看它的實現:

示例

dict1 = {}
dict1["Name"] = ["RAM", "RAVI", "TARUN", "MOHAN"] #assigning 1st key
dict1["Age"] = [22, 23, 18, 27] #assigning 2nd key
print(dict1)

輸出

{'Name': ['RAM', 'RAVI', 'TARUN', 'MOHAN'], 'Age': [22, 23, 18, 27]} 

在這裡,我們建立了一個空字典,然後從外部賦值鍵值。“Name”是第一個鍵,“Age”是第二個鍵。

如果我們反轉順序,即我們將列表分配為該字典的鍵,那麼讓我們看看會發生什麼:

示例

dict1 = {["Name", "Age", "Gender"]: "RAVI"}

輸出

dict1 = {["Name", "Age", "Gender"]: "RAVI"}
TypeError: unhashable type: 'list'  

會引發錯誤,因為列表本質上不是不可變的,因此不能用作鍵。

使用dict或defaultdict方法

dict()和defaultdict方法都可以用來生成列表字典。讓我們看看實現:

示例

from collections import defaultdict
lis1 = [("Name", "Arjun"), ("Age", 22), ("Age", 23), ("Age", 28), ("Name", "RAVI"),("Name", "ADITYA")]
dict1 = defaultdict(list)
for keys, values in lis1:
   dict1[keys].append(values)
print(dict1)

輸出

defaultdict(<class 'list'>, {'Name': ['Arjun', 'RAVI', 'ADITYA'], 'Age': [22, 23, 28]})
  • 這種方法的有趣之處在於它允許以每個值的括號形式傳遞列表資訊。這意味著對於給定的括號,我們只能傳遞單個鍵值。

  • 如果我們想增加鍵值,我們將需要一個帶有正確鍵名稱的新括號。這提高了程式的可讀性。

  • 在這裡,我們匯入了collections模組來使用“defaultdict”方法。我們以正確的順序傳遞了列表資訊。我們使用defaultdict方法來執行此操作,因為它效率更高,並且在缺少鍵的情況下會建立預設值。我們遍歷列表並將每個鍵值對新增到字典中。

使用setdefault方法

setdefault()方法用於返回與給定鍵關聯的字典值。這種方法的獨特性在於,如果指定的鍵不存在,則它會透過插入來建立該鍵。讓我們看看實現:

示例

dict1 = {}
lis1 = [23, 24, 28, 12, 22]
for key in lis1:
   for values in range(int(key), int(key)+4):
      dict1.setdefault(values, []).append(key)
print(dict1)

輸出

{23: [23, 22], 24: [23, 24, 22], 25: [23, 24, 22], 26: [23, 24], 27: [24], 28: [28], 29: [28], 30: [28], 31: [28], 12: [12], 13: [12], 14: [12], 15: [12], 22: [22]}

使用這種方法,我們可以建立每個鍵的記錄。這種方法的問題在於資料型別的選擇,只有數字條目可以被認為是範圍值。

這裡:

  • 我們建立了一個空字典,然後傳遞了一個儲存資訊的列表。

  • 我們遍歷列表並分離鍵和值。我們將每個數字條目作為鍵,然後使用另一個“for迴圈”設定值初始化的範圍。

  • 我們將值和它們的鍵新增到空字典中。

  • 最後,我們列印字典。

結論

在本文中,我們學習了字典建立和處理的基本概念。我們討論了建立列表字典的各種方法,並瞭解了每種方法的複雜性和侷限性。

更新於:2023年2月27日

2K+ 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始學習
廣告