从列表中转到字典键

Ina*_*uma 1 python dictionary python-3.x

我有一个包含很多值的字典树:

dict = {"a":{"b":{"c":"Hello World!"}}}
Run Code Online (Sandbox Code Playgroud)

如果我想打印出"Hello World!" 从词典里面,我必须这样做:

print(dict["a"]["b"]["c"])
Run Code Online (Sandbox Code Playgroud)

但是,我希望能够通过列表浏览字典.从理论上讲,这就是它的工作原理:

dict = {"a":{"b":{"c":"Hello World!"}}}
list = ["a", "b", "c"]
print(dict[list])
Run Code Online (Sandbox Code Playgroud)

而python会打印"Hello World!",但这似乎并不是它的工作方式.任何想法都会有很大的帮助!

Bre*_*arn 6

您可以使用reduce(在Python 3中需要导入from functools import reduce).

reduce(lambda a, b: a[b], key_list, my_dict)
Run Code Online (Sandbox Code Playgroud)

像这样:

my_dict = {"a":{"b":{"c":"Hello World!"}}}
key_list = ["a", "b", "c"]

>>> reduce(lambda a, b: a[b], key_list, my_dict)
'Hello World!'
Run Code Online (Sandbox Code Playgroud)

如果任何键不存在(或者如果字典嵌套太"浅",那么将引发异常,因此没有像键一样多的键).

请注意,我重命名了您的变量.使用listdict作为变量名称并不是一个好主意,因为它们会使用这些名称隐藏内置类型.

  • OP将此标记为3.x,因此您需要一个`from functools import reduce` (2认同)