如何在 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'>
通过使用列表推导式迭代列表元素,我们成功地创建了一个字典。
广告