使用推导式创建字典

使用推导式创建字典

技术背景

在 Python 编程中,字典是一种非常重要的数据结构,它通过键值对的形式存储数据。Python 提供了多种方式来创建字典,其中字典推导式就是一种简洁且高效的方法。字典推导式允许在运行时用一种简洁的语法来创建字典,这种语法在 Python 3 中引入,并被回溯到 Python 2.7 版本。

实现步骤

字典推导式基本语法

在 Python 中,可以使用字典推导式创建字典。其基本形式为 {key: value for (key, value) in iterable}。例如,我们有两个列表,一个存储键,另一个存储值,可使用字典推导式将它们组合成一个字典:

1
2
3
4
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = {key: value for (key, value) in zip(keys, values)}
print(dictionary)

添加过滤条件

字典推导式还可以添加过滤条件,只选择满足某些条件的键值对。例如:

1
2
3
blahs = [('blah0', 'blah'), ('blah1', 'blah'), ('blah2', 'blah'), ('blah3', 'blah')]
mydict = {k: v for k, v in blahs if not int(k[-1]) % 2}
print(mydict)

其他创建字典的方式

除了字典推导式,还可以使用 dict 构造函数结合 zip 函数来创建字典:

1
2
3
4
keys = ['a', 'b']
values = [1, 2]
dictionary = dict(zip(keys, values))
print(dictionary)

对列表中的元素进行处理

还可以在推导式中对值进行处理,例如:

1
2
3
import string
result = {k: v**3 for (k, v) in zip(string.ascii_lowercase, range(26))}
print(result)

核心代码

以下是几个使用字典推导式的示例代码:

将两个列表合并为字典

1
2
3
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = {key: value for (key, value) in zip(keys, values)}

添加过滤条件

1
2
blahs = [('blah0', 'blah'), ('blah1', 'blah'), ('blah2', 'blah'), ('blah3', 'blah')]
mydict = {k: v for k, v in blahs if not int(k[-1]) % 2}

生成字母对应的索引字典

1
2
import string
dict1 = {value: (int(key) + 1) for key, value in enumerate(list(string.ascii_lowercase))}

最佳实践

  • 简洁性:当需要从两个列表快速创建字典时,使用字典推导式能使代码更简洁。
  • 维护性:添加过滤条件时,字典推导式能使过滤逻辑清晰地展现在代码中,便于维护。
  • 性能考虑:在大数据量情况下,字典推导式相比传统循环方式能减少代码量,提高性能。

常见问题

Python 版本问题

字典推导式在 Python 2.7 及以后版本可用,在 Python 2.6 及更早版本中没有这种特性。对于 Python 2.6 及更早版本,可使用 dict() 构造函数结合生成器表达式来实现类似功能,例如 dict((i, True) for i in [1, 2, 3])

插入顺序问题

在 Python 3.7 之前,字典的插入顺序是不保证的;从 Python 3.7 开始,字典会保留插入顺序。如果对顺序有要求,需要注意所用的 Python 版本。


使用推导式创建字典
https://119291.xyz/posts/create-dictionary-with-comprehension/
作者
ww
发布于
2025年5月30日
许可协议