首页 > 文章列表 > 在Python中创建列表字典的方法

在Python中创建列表字典的方法

字典 列表 创建
162 2023-09-04

Python中的字典是以键值对的形式存储的数据的集合。我们可以分配不同的数据类型作为键的值。它帮助编码人员存储数据和类别流派并相应地构建数据库。

另一方面,列表也存储数据,但这里的元素不与多个值关联。字典和列表都已建立索引。在列表中,我们以序列的形式存储数据,并且可以遍历和操作这些序列。

在本文中,我们将合并这两种格式并创建一个列表字典。在深入探讨该主题之前,让我们快速浏览一下本文的概述。

创建字典

对于字典创建,我们使用“{}”大括号。让我们看看语法 -

dict1 = {"Car": "AUDI"}

这里“Car”是键,“AUDI”是键值。

创建列表

对于列表创建,我们使用“[]”方括号。让我们看看语法 -

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

这里,“姓名”、“年龄”、“性别”、“资格”是列表“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”是第二个键。

如果我们颠倒顺序,即我们将 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]})
  • 此方法的有趣之处在于它允许列表信息以括号每个值的形式传递。这意味着对于给定的括号,我们只能传递一个键值。

  • 如果我们想增加键值,我们需要一个具有正确键名称的新括号。这增加了程序的可读性。

  • 在这里,我们导入了 collections 模块以使用“defaultdict”方法。我们以正确的信息顺序传递了列表。我们使用 defaultdict 方法来执行此操作,因为它效率更高,并且会在丢失键的情况下创建默认值。我们遍历列表并将每个键和值对附加到字典中。

使用设置默认方法

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 循环”后,我们设置了值初始化的范围。

  • 我们将值及其键附加到空字典中。

  • 最后,我们打印了字典。

结论

在本文中,我们了解了字典创建和处理的基本概念。我们讨论了创建列表字典的各种方法,并了解每种方法的复杂性和局限性。