Python 中将列表转换为单个字典键值对列表
Python 是目前广泛使用的一种非常流行的高级语言。列表是 Python 中四种内置数据类型之一,用于存储数据的集合或组。字典、元组和集合是另外三种数据类型。
在使用 Python 时,经常会遇到需要将值列表转换为具有键值对的单个字典的情况。本文将指导您完成在 Python 中将列表转换为字典的过程。
最终,您将清楚地了解如何在 Python 中创建列表并将其转换为字典。
方法
要将列表转换为单个字典键值对列表,我们可以按照以下简单的步骤操作:
步骤 1 − 假设我们有一个列表,创建一个空字典。
步骤 2 − 使用循环迭代列表。
步骤 3 − 将列表的每个元素作为键,并将对应的索引作为字典中的值。
步骤 4 − 返回字典。
我们将讨论所有可能的处理方法。
代码实现
要在 Python 中创建列表,我们可以简单地将用方括号括起来的值列表赋给变量。
List_demo = [1,2,3,4]
现在,让我们深入了解解决方案:
方法 1:使用循环
此方法涉及首先创建一个键,然后附加值(不包括 K 索引处的值)以创建字典列表。
它的时间复杂度为 O(n),辅助空间为 O(n)。
示例
# initialize a list
demo_list = [2, 3, 4, 9, 8]
# printing the list
print("List : " + str(demo_list))
# initializing K
K = 3
# Convert list to Single Dictionary Key Value Pair
res = {demo_list[K]: []}
for i in range(len(demo_list)):
if i != K:
res[demo_list[K]].append(demo_list[i])
# printing result
print("Result : " + str(res))
输出
List : [2, 3, 4, 9, 8]
Result : {9: [2, 3, 4, 8]}
方法 2:使用列表切片
如果我们切出 K 索引并将其作为字典中的值,则另一种方法可以是一行代码。
下面的代码将使事情更清晰。
它的时间复杂度为 O(n),辅助空间为 O(n)。
示例
# initializing list
demo_list = [2, 3, 4, 9, 8]
# printing the list
print("List : " + str(demo_list))
# initializing K
K = 2
# Convert list to Single Dictionary Key Value Pair
res = {demo_list[K]: demo_list[:K] + demo_list[K + 1:]}
# result
print("Result : " + str(res))
输出
List : [2, 3, 4, 9, 8]
Result : {4: [2, 3, 9, 8]}
方法 3:使用列表/字典推导式
在这种方法中,将创建一个新列表,其中包含除演示/初始列表中索引 K 处的元素之外的所有元素。然后,它将创建一个新的字典,其中索引 K 处的键和新列表作为值。
它的时间复杂度为 O(n),辅助空间为 O(n)。
示例
# initialize a list
demo_list = [2, 3, 4, 9, 8]
# initializing K
K = 3
# using list comprehension to create a new list with all elements except the one at index K
new_list = [x for i, x in enumerate(demo_list) if i != K]
# creating a dictionary
res = {demo_list[K]: new_list}
# printing initial list
print("List : " + str(demo_list))
# printing result
print("Result : " + str(res))
输出
List : [2, 3, 4, 9, 8]
Result : {9: [2, 3, 4, 8]}
同样,我们可以使用字典推导式做同样的事情。时间复杂度和辅助空间保持不变。
方法 4:使用集合运算
另一种方法是使用集合运算。我们初始化初始列表和索引 K。创建一个包含索引键的集合,并从值中减去键以获得所有不在索引 K 处的值的集合。
使用这些集合创建一个字典。打印原始列表和最终字典。
它的时间复杂度为 O(n),辅助空间为 O(n)。
示例
# initializing list
demo_list = [2, 3, 4, 9, 8]
# initializing K
K = 3
# Using set operations
keys = {demo_list[K]}
values = set(demo_list) - keys
res = {keys.pop(): list(values)}
# printing the list
print("List : " + str(demo_list))
# printing Dictionary
print("Result : " + str(res))
输出
List : [2, 3, 4, 9, 8]
Result : {9: [8, 2, 3, 4]}
*现在,尝试使用 pop() 方法实现相同的功能*
方法 5:使用 filter 和 lambda 函数
在这种方法中,如果列表中的每个元素都不等于给定索引 K 处的元素,我们将创建一个 lambda 函数。并使用 filter() 函数提取通过 lambda 条件的列表。然后我们可以使用生成的列表进一步生成字典。
示例
# initializing a list
demo_list = [2, 3, 4, 9, 8]
# initializing K
K = 1
res = {demo_list[K]: list(filter(lambda x: x != demo_list[K], demo_list))}
# printing list
print("List : " + str(demo_list))
# printing result
print("Result : " + str(res))
输出
List : [2, 3, 4, 9, 8]
Result : {3: [2, 4, 9, 8]}
它的时间复杂度为 O(n),辅助空间为 O(n)。
结论
因此,我们浏览了将列表转换为单个字典键值对的各种方法。在 Python 中,我们有多种方法来实现函数或逻辑。我们需要根据需求记住最佳可行方法。
有时,执行所需的时间很重要,有时延迟很重要,有时格式也很重要。正如我们所看到的,输出通常略有不同。
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP