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+ 次浏览

启动你的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.