说我有一本简单的字典 d={'a':1}
我希望打个电话,d['b']['c'] = 2
但我不能,我得到:KeyError: 'b'
我不想先插入b
一个空字典,因为在大多数情况下,该字典将包含b
除以外的更多值c
。
有没有一种优雅的方法可以做到这一点,所以我的最终词典是:
d = {'a':1,
'b':{'c':2}}
defaultdict对您足够了吗?
from collections import defaultdict
d = defaultdict()
d['a'] = 1
print(d) # this gives back: defaultdict(None, {'a': 1})
d['b'] = {'c':2}
print(d) # this gives back: defaultdict(None, {'a': 1, 'b': {'c': 2}})
有关defaultdict的更好示例:
s = 'mississippi'
d = defaultdict(int)
for k in s:
d[k] += 1
d.items() # this gives back: [('i', 4), ('p', 2), ('s', 4), ('m', 1)]
首次遇到字母时,映射中会缺少它,因此default_factory函数调用int()来提供默认计数零。然后,递增操作将为每个字母建立计数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句