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 中,我们有多种方法来实现函数或逻辑。我们需要根据需求记住最佳可行方法。

有时,执行所需的时间很重要,有时延迟很重要,有时格式也很重要。正如我们所看到的,输出通常略有不同。

更新于:2023年8月18日

144 次查看

启动您的 职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.