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循环”设置值初始化的范围。
我们将值和它们的键添加到空字典中。
最后,我们打印字典。
结论
在本文中,我们学习了字典创建和处理的基本概念。我们讨论了创建列表字典的各种方法,并了解了每种方法的复杂性和局限性。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP