经典结构:
- 首先判断这个key是否在字典种
- 如果不在, 那么给这个字典添加上这个key, 初始化
if key not in my_dict:
my_dict[key] = some_type
my_dict[key].process()
上面那种不是很美观, 引入defaultdict defaultdict( lambda: x ) 它接收一个func , 没有参数 ,返回的就是key不存在时的默认值, 概念有点像 dict.get(key, default) 这种, key不存在, 返回默认值 如下例子, 不用判断默认值, 没有key的话, 拿到的就是默认的结构{'skeleton': set(), 'graphs': set()}
coding=utf-8
from collections import defaultdict
model_dict = defaultdict(lambda: {'skeleton': set(), 'graphs': set()})
print model_dict[2]['skeleton'].add(3)
print model_dict[2]['skeleton']
print model_dict[1]['skeleton']
if 2 not in model_dict:
model_dict[2] = {'skeleton': set(), 'graphs': set()}
else:
model_dict[2]['skeleton'].add(1)
|