我有一个包含一长串值的字典树:
dict = {"a":{"b":{"c":"Hello World!"}}}
如果我想打印出“Hello World!”从字典内部,我必须这样做:
print(dict["a"]["b"]["c"])
但是,我希望能够使用列表遍历字典。理论上,它是这样工作的:
dict = {"a":{"b":{"c":"Hello World!"}}}
list = ["a", "b", "c"]
print(dict[list])
Python 会打印“Hello World!”,但这似乎不是它的工作原理。任何想法都会有很大帮助!
最佳答案
您可以使用 reduce
(在 Python 3 中您需要使用 from functools import reduce
导入)。
reduce(lambda a, b: a[b], key_list, my_dict)
像这样:
my_dict = {"a":{"b":{"c":"Hello World!"}}}
key_list = ["a", "b", "c"]
>>> reduce(lambda a, b: a[b], key_list, my_dict)
'Hello World!'
如果任何键不存在(或者如果字典嵌套太“浅”以至于字典没有键那么多),将引发异常。
请注意,我重命名了您的变量。使用 list
和 dict
作为变量名不是一个好主意,因为它们用这些名称遮盖了内置类型。
关于python - 从列表转到字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26722211/