大家好,我是正在实战各种AI项目的程序员晚枫。
今天聊一个Python中被严重低估的数据结构——字典(dict)。
很多人学Python时,觉得字典就是”键值对存储”,用列表也能实现。但你知道吗?用字典做查询,比列表快100倍!
看完这篇文章,你会重新认识这个神器。
为什么字典这么快?
列表查询(慢)
1 | users = ['Alice', 'Bob', 'Charlie', 'David', 'Eve'] |
字典查询(快)
1 | users = {'Alice': 1, 'Bob': 2, 'Charlie': 3, 'David': 4, 'Eve': 5} |
原理:字典底层是哈希表,查询时间是常数级。
数据量越大,差距越明显:
- 1000条数据:字典快50倍
- 100000条数据:字典快1000倍
字典的6个实用技巧
技巧1:get方法安全取值
1 | scores = {'Alice': 85, 'Bob': 90} |
技巧2:setdefault一键初始化
1 | # 统计字母出现次数 |
技巧3:update合并字典
1 | dict1 = {'a': 1, 'b': 2} |
技巧4:字典推导式
1 | names = ['Alice', 'Bob', 'Charlie'] |
技巧5:用zip快速创建字典
1 | keys = ['name', 'age', 'city'] |
技巧6:Counter统计频率
1 | from collections import Counter |
实战案例:用户管理系统
假设你要做一个简单的用户查询系统:
错误做法(用列表)
1 | users = [ |
正确做法(用字典)
1 | users = { |
什么时候用字典?
✅ 适合用字典的场景
- 频繁查询(根据key找value)
- 需要去重
- 需要快速判断元素是否存在
- 配置信息存储
❌ 不适合用字典的场景
- 只需要按顺序遍历(用列表)
- 内存特别紧张(字典开销比列表大)
- key需要变化(字典key必须不可变)
常见面试题
Q:字典的key可以是哪些类型?
A:必须是可哈希的(不可变),如字符串、数字、元组。列表和字典不能当key。
Q:两个字典怎么合并?
A:Python 3.9+ 可以用 dict1 | dict2,或者用 update() 方法。
Q:如何保持字典有序?
A:Python 3.7+ 的字典默认有序,或者使用 collections.OrderedDict。
推荐:AI Python零基础实战营
想深入学习Python数据结构?
课程内容:
- ✅ Python基础语法
- ✅ 数据结构详解(列表、字典、集合、元组)
- ✅ 算法与复杂度分析
- ✅ 实战项目练习
🎁 限时福利:送《Python编程从入门到实践》实体书
👉 点击了解详情
相关阅读
PS:字典是Python最高效的数据结构之一,掌握它,你的代码性能和可读性都会大幅提升。
