- 字典获取不存在的键时会报错
name = {} print(name["mhy"])

解决
- 方式一,通过引入python
collections
模块中的defaultdict
解决,意思是给不存在的键一个默认的对应数据类型的默认值# 给不存在的键一个默认值,这里是int类型,可以传入python其他数据类型 from collections import defaultdict name = defaultdict(int) print(name["mhy"])
- 方式二,通过编写继承dict类并重写
__missing__
魔术方法实现class default(dict): def __missing__(self, key): self[key] = 0 return self[key] name = default() print(name["mhy"])
-
运行结果:
结果
扩展
- 两个键的情况,可以结合以上
defaultdict
与__missing__
:from collections import defaultdict class default2(dict): def __missing__(self, key): self[key] = defaultdict(int) return self[key] if __name__ == '__main__': T = default2() print(T["mhy"]["dengyusen"])
- 三个键的情况:
from collections import defaultdict class default(dict): def __missing__(self, key): self[key] = default2() return self[key] class default2(dict): def __missing__(self, key): self[key] = defaultdict(int) return self[key] if __name__ == '__main__': T = default() print(T["mhy"]["dengyusen"]["san"])
网友评论