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迴圈”設定值初始化的範圍。
我們將值和它們的鍵新增到空字典中。
最後,我們列印字典。
結論
在本文中,我們學習了字典建立和處理的基本概念。我們討論了建立列表字典的各種方法,並瞭解了每種方法的複雜性和侷限性。