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:过滤和Lambda函数
在这种方法中,我们将创建一个lambda函数,如果列表中的每个元素不等于给定K处的元素,则返回True。并使用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中,我们有多种实现功能或逻辑的方式。我们需要根据要求选择最合适的方式。
有时,执行所需的时间很重要,有时延迟很重要,有时格式也很重要。正如我们所看到的输出经常略有不同。