在Python中将列表转换为字典

在Python中将列表转换为字典并不是太难。

让我们来看看不同的方法将列表转换为字典。

简介

在开始教程之前,让我们看一个将列表转换为字典的示例。我们将有一个元组列表(每个元组包含两个元素)或者仅有元素的列表。我们将同时处理这两种输入并将它们转换为字典。

示例:

在下面的示例中,我们取了一个元组列表并将其转换为字典。我们将每个元组的第一个元素作为字典的键,第二个元素作为值。

输入:list_one = [(‘a’, ‘A’), (‘b’, ‘B’), (‘c’, ‘C’)]

输出:{‘a’: ‘A’, ‘b’: ‘B’, ‘c’: ‘C’}

在下面的示例中,我们取了一个元素列表,并将其转换为一个以交替元素为键和值的字典。如果没有元素可用作键(列表中有奇数个元素),我们将为该键赋值为null。

输入:list_one = [‘a’, ‘A’, ‘b’, ‘B’, ‘c’, ‘C’, ‘d’]

输出:{‘a’: ‘A’, ‘b’: ‘B’, ‘c’: ‘C’, ‘d’: None}

我们已经了解了这个教程的目标。我们将以不同的方式讨论这两个例子。让我们从第一个例子开始。

元组列表 – 字典

让我们看看如何将一个元组列表转换为字典。你可以尝试按照以下步骤编写代码。

  • 使用上面的示例提供的虚拟数据初始化元组列表(确保列表中的每个元组都恰好有两个元素)。
  • 将元组列表传递给dict 方法,它将结果存储在一个新变量中。
  • 就这样,我们用一行代码将元组列表转换为了字典。
# 元组列表
list_of_tuples = [('a', 'A'), ('b', 'B'), ('c', 'C')]

# 转换为字典
list_of_tuples_dict = dict(list_of_tuples)

# 打印结果字典
print(list_of_tuples_dict)

你可以通过执行上面的程序来测试输出。你将得到和示例中看到的结果。

列表 – 字典

我们已经看到如何将元组列表转换为字典,这在Python中是一件很简单的事情。在本节中,我们将看到如何将一个普通列表转换为字典。

参考教程的第一节中的第二个示例以获得更清晰的理解。

按照以下步骤编写第二个示例的代码。

我们为不会有任何值的元素(包含奇数个元素的列表)填充了默认值None 。为此,我们需要使用一个叫做zip_longest 的方法,这个方法来自模块itertools

  • 导入模块itertools 并使用示例中提供的元素数目为奇数的列表初始化一个列表。
  • 将列表转换为可迭代对象,以避免在zip_longest 方法中重复使用key value 对。
  • 现在,将可迭代对象传递给方法zip_longest 并将fillvalue设置为None。它将返回一个zip对象。
    • 我们需要两次传递可迭代对象,因为它从两个可迭代对象中获取键和值。在我们的例子中,键和值都在同一个可迭代对象中。所以,在fillvalue之前我们需要将它传递两次。
  • 使用dict 方法将对象转换为Python字典。
  • 打印结果。
  • # 导入模块
    import itertools
    
    # 奇数个元素的普通列表
    plain_list = ['a', 'A', 'b', 'B', 'c', 'C', 'd']
    
    # 将其转换为可迭代对象以避免重复
    plain_list_iter = iter(plain_list)
    
    # 将plain_list转换为字典
    plain_list_dict_object = itertools.zip_longest(plain_list_iter, plain_list_iter, fillvalue=None)
    
    # 使用`dict`将zip_longest对象转换为字典
    plain_list_dict = dict(plain_list_dict_object)
    
    # 打印它
    print(plain_list_dict)

    You can give the fillvalue whatever you want. Try out different things with it. And execute the code to see whether we are getting the exact output as mentioned in the example or not.

    Conclusion

    希望你喜欢将列表转换为字典。我们在下一个教程中见面。

    接下来,学习如何 Flatten list in Python

    Happy Coding 🙂

类似文章