Python 3中:创建空字典逐个赋值与直接定义字典哪个更高效?
两种Python字典初始化方式的效率对比
直接创建并初始化所有键值对的方式(方式二)效率远高于先建空字典再逐个添加的方式(方式一),核心原因如下:
- 字典字面量初始化是在编译阶段就完成了内存分配与键值对构建,Python解释器会一次性为所有元素分配足够空间,避免了后续动态扩容的额外开销。
- 逐个添加键值对时,每一次赋值都要单独执行哈希计算、键存在性检查,若字典容量不足还会触发扩容操作(重新分配内存、迁移已有数据),累加下来性能损耗明显。
两种实现代码对比
方式一:先初始化空字典再逐个添加键值对
my_dict = {} my_dict['a'] = 1 my_dict['b'] = 2 my_dict['c'] = 3
方式二:创建时直接初始化所有键值对
my_dict = { 'a': 1, 'b': 2, 'c': 3 }
量化性能差异(可选测试)
用timeit模块可以直观看到两者的耗时差距:
import timeit # 测试方式一的耗时 time1 = timeit.timeit("my_dict = {}; my_dict['a']=1; my_dict['b']=2; my_dict['c']=3", number=1000000) # 测试方式二的耗时 time2 = timeit.timeit("my_dict = {'a':1, 'b':2, 'c':3}", number=1000000) print(f"方式一耗时: {time1:.4f}秒") print(f"方式二耗时: {time2:.4f}秒")
实际运行后,方式二的耗时通常仅为方式一的一半甚至更少。
内容的提问来源于stack exchange,提问作者Karthik Vasishta Ramesh
相关产品推荐
相关产品推荐

