Python构造字典的两种常用方式:dict(zip)与直接赋值对比

Evan
Evan
发布时间:2026-10-15| 4人浏览过
原创

本文详解Python中通过dict(zip)和{}直接赋值两种构造字典的方法。对比发现,dict(zip)生成键值对映射,索引速度快但空间占用大;{}方式以列表为值,节省空间但需额外获取索引。通过sys.getsizeof测试验证了不同数据量下的内存差异,为离线保存Embeddings等场景提供选型参考。

Python字典构造的两种基本方法

在Python开发中,构建包含键值对的数据结构是常见需求。最常用的两种手段是利用dict函数配合zip函数进行组合,或者直接使用花括号语法。

例如,我们可以定义一组ID和对应的名称列表。

aid = [i for i in range(10)]
name = [[1] * 3] * len(aid)
dic1 = dict(zip(aid,name))
print('dic1:', dic1)

具体实现如下代码所示。

{0: [1, 1, 1], 1: [1, 1, 1], 2: [1, 1, 1], 3: [1, 1, 1], 4: [1, 1, 1], 5: [1, 1, 1], 6: [1, 1, 1], 7: [1, 1, 1], 8: [1, 1, 1], 9: [1, 1, 1]}

这种方法建立的是aid与name之间的一一映射关系,其中将aid作为字典的key,第二列数据作为value。

除了上述方式,还可以利用dic函数的形式,或者直接通过{}字面量语法来构造字典。

dic2 = {'aid': aid,'name':name}
print('\ndic2:',dic2)

{ ‘aid’: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], ‘name’: [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]] }

这种写法通过建立新的key(如'aid'和'name'),将list作为value进行存储,结构更为扁平。

访问速度与空间占用对比分析

以上两种构造方法,若后续需要通过aid进行索引以获取对应值,处理方式有所不同。

方法1可以直接通过key取出对应的value,访问速度更快;而方法2还需要先获取到index再进行取值,步骤稍多。因此,从访问速度来看,方法1更具优势,但与之相对的是,方法1存储了大量的key-value对,在存储空间占用上不如方法2紧凑。

内存占用测试与场景建议

为了验证空间占用的差异,我们进行了如下测试。

aid = [i for i in range(10)]
name = [[1] * 3] * len(aid)

dic1 = dict(zip(aid,name))
dic2 = {'aid': aid,'name':name}
print('dic1:', dic1)
print(sys.getsizeof(dic1))

print('\ndic2:',dic2)
print(sys.getsizeof(dic2))
dic1: {0: [1, 1, 1], 1: [1, 1, 1], 2: [1, 1, 1], 3: [1, 1, 1], 4: [1, 1, 1], 5: [1, 1, 1], 6: [1, 1, 1], 7: [1, 1, 1], 8: [1, 1, 1], 9: [1, 1, 1]}
360

dic2: {'aid': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], 'name': [[1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1], [1, 1, 1]]}
232

测试结果表明,字典占用的空间大小与键值对的个数并非简单的线性关系。如果在处理大规模数据时,必须考虑内存占用情况。例如,当存在10000个键值对时,该方法可能占用7w字节的空间。(此场景常见于离线保存embeddings数据)

到此这篇关于python通过dict(zip)和{}的方式构造字典的文章就介绍到这了,更多相关python dict构造字典内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。