mp = collections.defaultdict(nums)mp = dict()有啥区别

📅 2026/7/2 23:27:07 👁️ 阅读次数 📝 编程学习
mp = collections.defaultdict(nums)mp = dict()有啥区别

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!