python - 从列表转到字典键

标签 python python-3.x dictionary

我有一个包含一长串值的字典树:

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!'

如果任何键不存在(或者如果字典嵌套太“浅”以至于字典没有键那么多),将引发异常。

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

关于python - 从列表转到字典键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26722211/

相关文章:

python - 密码验证 - Python

python - Pandas :将列值更改超过一定数量

python - 为什么在迭代期间修改 dict 并不总是引发异常?

python - DLL 加载失败 : The specified procedure could not be found. win32api、sys、os

sorting - 我如何使用mapreduce在hadoop集群上实现自适应mergesort

java - 包含 Map<Entity, Entity> 字段的正确方法是什么

python - 为什么我的 Django 安装提供空的 HTTP 响应?

python - 无法检查数字是否完美

c++ - Visual C++ 2010 中的 STL 映射实现和线程安全

python - 如何使用python mysql实现搜索引擎?