这是我正在使用的代码。我需要能够从列表中包含的值更改test["test1"]["test2"]["test3"]
的值。此列表可能会变长或变短。如果密钥不存在,我需要能够创建它。
test = {"test1": {"test2": {"test3": 1}}}
print test["test1"]["test2"]["test3"]
# prints 1
testParts = ["test1", "test2", "test3"]
test[testParts] = 2
print test["test1"]["test2"]["test3"]
# should print 2
答案 0 :(得分:1)
当你尝试
时test[testParts] = 2
您将获得TypeError
,因为testParts
是一个列表,它是可变且不可删除的,因此不能用作字典键。您可以使用元组(不可变,可散列)作为键:
testParts = ("test1", "test2", "test3")
test[testParts] = 2
但这会给你
test == {('test1', 'test2', 'test3'): 2, 'test1': {'test2': {'test3': 1}}}
没有内置方法可以执行您要执行的操作,即“解压缩”testParts
到嵌套字典的键中。你可以这样做:
test["test1"]["test2"]["test3"] = 2
或写一个函数来自己做。