如何在 Python 中使用列表推导式创建字典?


通过使用 Python 中的 dict() 方法,我们可以使用列表推导式创建 Python 字典。下面给出 dict() 方法的语法。以下是此方法的语法

dict(**kwarg)

关键字参数。我们可以传递一个或多个关键字参数。如果未传递任何关键字参数,则 dict() 方法将创建一个空字典对象。使用列表推导式创建字典的语法

dict(list_comprehension)

使用列表推导式创建字典

这里不需要发送多个关键字,而需要将包含键值对的元组列表发送到 dict() 方法。让我们举个例子,并使用列表推导式创建一个字典。

示例

dict_= dict([(chr(i), i) for i in range(100, 105)])
print('Output dictionary: ', dict_)
print(type(dict_))

输出

Output dictionary:  {'d': 100, 'e': 101, 'f': 102, 'g': 103, 'h': 104}
<class 'dict'>

为了在列表推导式中迭代 for 循环,我们使用了 range() 方法。并且我们还使用了另一个 Python 内置函数 chr() 来获取 Unicode 整数的字符串表示形式。在输出字典中,键由 Unicode 整数的字符串表示形式创建,值由循环整数创建。

示例

这里,我们使用 Python zip() 方法将两个输入列表“data1”和“data2”传递给列表推导式。此 zip() 方法基于 2 个输入创建迭代器,最后使用列表推导式创建字典。

data1 = [1, 2, 3, 4, 5]
data2 = [10, 20, 30, 40, 50]
print('input list1: ', data1)
print('input list12: ', data2)

# create a dict using list comprehension
d = dict([(key, value) for key, value in zip(data1,data2)])
print('Output dictionary: ', d)
print(type(d))

输出

input list1:  [1, 2, 3, 4, 5]
input list12:  [10, 20, 30, 40, 50]
Output dictionary:  {1: 10, 2: 20, 3: 30, 4: 40, 5: 50}
<class 'dict'>

示例

在下面的示例中,使用 Python 列表推导式技术,我们创建了一个元组列表,每个元组包含 2 个元素。然后,这两个元素被转换为字典对象的键和值。

l = [( i,i*2) for i in range(1,10)]
print("Comprehension output:",l)

dict_= dict(l)
print('Output dictionary: ', dict_)
print(type(dict_))

输出

Comprehension output: [(1, 2), (2, 4), (3, 6), (4, 8), (5, 10), (6, 12), (7, 14), (8, 16), (9, 18)]
Output dictionary:  {1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}
<class 'dict'>

示例

最后,让我们再举一个例子,看看如何在 Python 中使用列表推导式创建字典。

l = [20, 21, 65, 29, 76, 98, 35]
print('Input list: ', l)

# create a dict using list comprehension
d = dict([(val/2, val) for val in l])
print('Output dictionary: ', d)
print(type(d))

输出

Input list:  [20, 21, 65, 29, 76, 98, 35]
Output dictionary:  {10.0: 20, 10.5: 21, 32.5: 65, 14.5: 29, 38.0: 76, 49.0: 98, 17.5: 35}
<class 'dict'>

通过使用列表推导式迭代列表元素,我们成功地创建了一个字典。

更新于: 2023年8月24日

495 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告