Python使用数组中的值更改字典值

时间:2014-04-11 12:29:13

标签: python arrays list python-2.7 dictionary

这是我正在使用的代码。我需要能够从列表中包含的值更改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

1 个答案:

答案 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

或写一个函数来自己做。