我有一个奇怪的问题。如果我有这样的字典:
{"foo":{"abc":123},"bar":{"def":456},"biz":789}
我有一个像这样的索引列表:
["foo","abc"]
我如何获取和修改该项目?我见过这样的问题,但所有答案都告诉我要做一堆索引:
foobar["foo"]["abc"] = "modified"
但问题是我的索引在列表中。此外,我可以做一些像[“foo”,“abc”,“more”,“items”]这样的东西,这需要等同于foobar [“foo”] [“abc”] [“more”] [“items” “]
我是否有某种方法可以使用索引列表来获取和修改字典中的项目?
答案 0 :(得分:1)
这很简单,使用递归,如:
def dict_access_multi(a_dict, keys):
if len(keys) == 0:
return a_dict
return dict_access_multi(a_dict[keys[0]], keys[1:])
data = {"foo": {"abc": 123}, "bar": {"def": 456}, "biz": 789}
print(dict_access_multi(data, ["foo", "abc"]))
print(dict_access_multi(data, ["bar", "def"]))
print(dict_access_multi(data, ["biz"]))
123
456
789