mp = collections.defaultdict(nums)❌这是错的!mp = dict()✅这是对的!
我给你用最简单、最形象的方式讲清楚区别!
1.mp = dict()= 普通字典
python
运行
mp = {} # 或者 mp = dict()就是一个普通的 map(哈希表)长这样:
plaintext
key 存数字 value 存下标 { 2:0, 7:1 }两数之和就用这个就够了!
2.mp = collections.defaultdict(?)= 智能字典
它的作用只有一个:
当你访问一个不存在的 key时,自动给你一个默认值,不报错。
正确写法只能是这两种:
python
运行
defaultdict(int) # 默认 0 defaultdict(list) # 默认空列表 []但你写了:
python
运行
defaultdict(nums)❌大错特错!nums 是数组,不是默认类型,程序直接崩!
3. 最关键:两数之和根本不需要 defaultdict
你只需要:
python
运行
mp[x] = j存一下数字 → 下标,普通字典{}完全够用!
终极总结(最重要)
表格
| 写法 | 作用 | 你的代码能用吗? |
|---|---|---|
mp = {} | 普通字典 | ✅完美适用 |
defaultdict(list) | 自动创建空列表(分组用) | ❌ 不需要 |
defaultdict(nums) | 错误写法 | ❌直接报错 |
结论(记住这句就行)
两数之和,只用mp = {}就够了!不要用 defaultdict!