很抱歉,如果之前已经回答过这个问题 - 我一直在寻找解决方案,但我可能没有使用正确的搜索字词.
无论如何,我要做的是在给定索引列表和值的情况下以编程方式在字典中设置值,可能是嵌套的.
例如,假设我的索引列表是:
['person', 'address', 'city']
Run Code Online (Sandbox Code Playgroud)
而且价值是
'New York'
Run Code Online (Sandbox Code Playgroud)
我想要一个字典对象,如:
{ 'Person': { 'address': { 'city': 'New York' } }
Run Code Online (Sandbox Code Playgroud)
基本上,列表表示嵌套字典中的"路径".
我想我可以构建字典本身,但我磕磕绊绊的是如何设置值.显然,如果我只是手动编写代码,那将是:
dict['Person']['address']['city'] = 'New York'
Run Code Online (Sandbox Code Playgroud)
但是,如果我只有一个索引和值的列表,我如何索引到字典并以编程方式设置值?
希望这是有道理的,并不是一个愚蠢的问题... :)谢谢你的帮助.
使用深层嵌套的python dicts,我希望能够在这样的数据结构中分配值,如下所示:
mydict[key][subkey][subkey2]="value"
Run Code Online (Sandbox Code Playgroud)
无需检查mydict [key]等实际上是否设置为dict,例如使用
if not key in mydict: mydict[key]={}
Run Code Online (Sandbox Code Playgroud)
子代的创建应该在飞行中发生.什么是允许等价的最优雅方式 - 可能在标准上使用装饰器<type 'dict'>?
有这样的字典
my_pets = {
'Rudolf': {
'animal': 'cat',
'legs': 4
}
}
Run Code Online (Sandbox Code Playgroud)
达到低于同等水平的较干净方法是什么?
my_pets['Rudolf']['legs']['front-right']['injured'] = True
my_pets['Rudolf']['legs']['front-left']['injured'] = False
Run Code Online (Sandbox Code Playgroud)
它应该更新为
my_pets = {
'Rudolf': {
'animal': 'cat',
'legs': {
'front-right': {'injured':True},
'front-left': {'injured':False}
}
}
}
Run Code Online (Sandbox Code Playgroud)