设置未知深度的嵌套字典的值?

时间:2017-04-19 14:39:57

标签: python python-2.7 function dictionary

所以我有一个列表作为各种各样的'map',以及从JSON文件中提取的dict。

对于这个例子,让我们说它们看起来像这样:

L = ['One', 'Two', 'Three']

D = {
    "One": {
        "Two": {
            "Three": {
                "Four": "String"
            }
        }
    }
}

我的游戏需要一个功能。

我将传递两件事:LObject

请注意,L只会导致"Three",这就是我要替换的内容。但是,我可以在未知的事件中替换"Four"或任何其他元素。

我正在替换的内容可以是stringlistdict,我可以将其替换为任何其他对象,包括None,或者bool

除了被替换的值之外,D的结构需要保持完整。

2 个答案:

答案 0 :(得分:0)

此函数将一个字符串列表作为路径和一个对象来替换定位的值,对全局变量nested_dicts进行操作。如果您想要遵循功能范例,您可能需要相应地重写它。

def replace (path, replacement):
    pointer = nested_dicts
    try:
        for key in path[:-1]:
            pointer = pointer[key]
    except KeyError:
        return False
    pointer[path[-1]] = replacement
    return True

答案 1 :(得分:0)

这样的工作(add(Double value)pathL是替代品):

o
相关问题