如何在尚不存在的键下创建嵌套字典? [英] How do I create a nested dictionary under a key that is yet to exist?

查看:60
本文介绍了如何在尚不存在的键下创建嵌套字典?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个空数组.

我想分配一个像这样的值: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 defaultdicts 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆