Python 创建一个列表字典的方法
python 中的 dictionary 是一个以 key value pair 形式存储的数据集合。我们可以指定不同的数据类型作为一个键的值。它可以帮助编码人员存储数据和类别,并建立相应的数据库。
另一方面,列表也存储数据,但这里的元素不与多个值相关。字典和列表都是有索引的。在列表中,我们以序列的形式存储数据,这些序列可以被遍历和操作。
在这篇文章中,我们将把这两种格式合并起来,创建一个列表的字典。在我们深入探讨这个话题之前,让我们快速浏览一下本文的概述。
创建一个字典
对于字典的创建,我们使用”{}”大括号。Let’s see the syntax −
dict1 = {"Car": "AUDI"}
这里 “Car “是键值,”AUDI “是键值。
创建一个列表
对于列表的创建,我们使用[]
方括号。让我们看看这个语法 –
lis1 = ["Name", "age", "gender", "qualification"]
这里,”姓名”、”年龄”、”性别”、”学历 “是列表 “lis1 “的元素。
当我们试图把这些格式结合起来产生一个列表的字典时,这意味着我们必须把列表当作一个键值对。但问题是,一个列表是作为一个键还是一个值。分配键值的规则是它应该是 “不可变的 “或不可改变的。
因此,一个 list 不能作为一个 dictionary 的 key。因此,在处理 list 的 dictionary 时,我们将把 list 作为一个不可变的 key 的 “值” 来处理。
创建 list 的 dictionary 的不同方法
以下标的形式将 list 赋为值
在这种方法中,我们直接命名键并给它们分配一个列表的值。让我们看看它的实现 —
例子
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]}
在这里,我们创建了一个空的字典,然后从外部分配键值。”姓名 “是第一个 键,”年龄 “是第二个键。
如果我们把顺序颠倒过来,即我们把 list 作为这个字典的键值,那么让我们看看会发生什么。
例子
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]})
- 这个方法的有趣之处在于,它允许列表信息以每个值的括号形式传递。这意味着,对于一个给定的括号,我们只能传递一个单一的键值。
-
如果我们想增加键值,我们将需要一个新的括号,并加上正确的键名。这增加了程序的可读性。
-
在这里,我们导入了集合模块来使用 “defaultdict “方法。我们用正确的信息顺序来传递列表。我们使用defaultdict方法来执行这个操作,因为它的效率更高,并且在键值缺失的情况下创建一个默认值。我们遍历了这个列表,并将每个键和值对附加到一个字典中。
使用 set default 方法
setdeafault() 方法用来返回一个与给定键相关的字典值。这个方法的独特之处在于,如果指定的键不存在,那么它通过插入来创建这个特定的键。让我们来看看这个方法的实现。
例子
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循环 “后,我们为值的初始化设置了一个范围。
-
我们在空的字典中附加了值和它们的键。
-
最后,我们打印了这个字典。
总结
在这篇文章中我们了解了字典创建和处理的基本概念。我们讨论了创建列表字典的各种方法,了解了每种方法的复杂性和局限性。