Python中如何快速创建嵌套字典并自动插入元素?
简化嵌套字典的赋值操作
当然可以简化,不用手动判断内层字典是否存在,Python有几种原生方案能实现自动创建嵌套结构并赋值:
方法1:使用字典的setdefault()方法
setdefault()方法会先检查指定key是否存在:如果存在就返回对应的值;如果不存在,就将key与指定的默认值关联后返回这个默认值。刚好适配你的场景,一行代码就能替代原有的判断逻辑:
key2 = 1 self.mydict = {1:{}} # 直接用setdefault处理,无需if-else判断 self.mydict.setdefault(key1, {})[key2] = None
方法2:使用collections.defaultdict
如果你的代码中经常需要这种嵌套字典的自动创建,推荐用collections模块里的defaultdict,它能在访问不存在的key时自动生成指定类型的对象(这里是内层字典):
首先导入模块:
from collections import defaultdict
然后初始化字典时指定工厂函数为dict:
key2 = 1 # 初始化时用defaultdict,自动生成内层空字典 self.mydict = defaultdict(dict) # 直接赋值即可,无需任何判断 self.mydict[key1][key2] = None
如果需要把defaultdict转回普通字典,只需要调用dict(self.mydict)就行。
内容的提问来源于stack exchange,提问作者JobHunter69
相关产品推荐
相关产品推荐

