如何在尚不存在的键下创建嵌套字典? [英] How do I create a nested dictionary under a key that is yet to exist?
问题描述
我有一个空数组.
我想分配一个像这样的值:array[key][subkey] = 'value'
I want to assign a value like this: array[key][subkey] = 'value'
这会产生 KeyError ,因为array [key]尚不存在.
This produces a KeyError as array[key] does not exist yet.
我该怎么办?我尝试了以下...
What do I do? I tried the following...
array['key'] = None
array['key']['subkey'] = 'value'
TypeError:"NoneType"对象不支持项目分配
TypeError: 'NoneType' object does not support item assignment
我尝试过:
array['key'] = []
array['key']['subkey'] = 'value'
TypeError:列表索引必须是整数,而不是str
TypeError: list indices must be integers, not str
我尝试过:
array['key'] = ['subkey']
array['key']['subkey'] = 'value'
TypeError:列表索引必须是整数,而不是str
TypeError: list indices must be integers, not str
那我该怎么办?
推荐答案
您可以使用要应用更多级别的嵌套,您可以创建一个defaultdict
,它使用一个函数(最好是匿名函数)将defaultdict
s返回到第 n 个嵌套深度,以返回嵌套默认字典:
To apply further levels of nesting, you can create a defaultdict
that returns defaultdict
s to a n-th depth of nesting, using a function, preferably anonymous, to return the nested default dict(s):
>>> d = defaultdict(lambda: defaultdict(dict))
>>> d['key']['subkey']['subsubkey'] = 'value'
>>> d
defaultdict(<function <lambda> at 0x104082398>, {'key': defaultdict(<type 'dict'>, {'subkey': {'subsubkey': 'value'}})})
示例显示了嵌套到深度n=1
这篇关于如何在尚不存在的键下创建嵌套字典?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!