核心要点
掌握 {}、dict() 多种构造方式
知道键的要求(可哈希)与 dict 保序(3.7+)
熟悉常用操作:get、setdefault、update、推导式
简要回答
dict 用 {} 或 dict() 创建,键须可哈希;Python 3.7+ 保持插入顺序;支持推导式与 fromkeys 等工厂方法。
标准回答
一、先给出结论和背景
- 创建方式:示例代码可以这样理解:
d1 = {"a": 1, "b": 2}
d2 = dict(a=1, b=2)
d3 = dict([("a", 1), ("b", 2)])
d4 = {x: x**2 for x in range(5)} # 推导式
d5 = dict.fromkeys(["a", "b"], 0) - 键约束:可哈希且不可变——
str、int、tuple(元素可哈希)等。
二、拆开关键步骤和判断点
- 常用 API:-
d.get(k, default)安全取值 d.setdefault(k, default)d.update(other)/d | other(3.9+ 合并)d.keys()/values()/items()- 顺序:3.7+ 官方保证插入顺序;3.6 CPython 已实现。
三、补上落地边界和取舍
- 应用:配置映射、计数(
collections.Counter)、JSON 解析json.loads→ dict。
回答思路
【定义】用一句话说清「如何在 Python 中创建字典」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:只罗列名词、不会举例;混淆相似概念;忽略工程约束(成本、延迟、数据质量)。不确定时应主动说明假设。
追问
追问 1:dict.get 和 dict[key] 有什么区别?
d[k] 键不存在抛 KeyError;d.get(k, default) 返回 default。不确定键是否存在时用 get;确定存在或需区分「无键」与「值为 None」时用 []。
追问 2:defaultdict 解决什么问题?
collections.defaultdict(list) 访问缺失键时自动 list() 工厂建默认值,适合建图邻接表、分组聚合,避免反复 if key not in d。
追问 3:如何合并两个字典?
Python 3.9+:d = d1 | d2 或 d1 |= d2。更早版本:{**d1, **d2} 或 d1.update(d2)。后者原地修改 d1。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
