考虑以下命令:
{
"a" : {
"b" : [
entry,
entry,
...
]
}
}
给定键形式为"a.b"
的键,是否可以解决每个条目?
理想情况下,可以编写类似dict[*("a.b".split("."))]
的东西并获得dict["a"]["b"]
,但是我还没有找到在Python中实现此目的的方法。
由于似乎没有人真正在乎质量代码,所以我最终使用了一个普通的for循环:
data = { "a" : { "b" : "foo" } }
key = "a.b"
d = data
for k in key.split("."):
d = d[k]
d == data["a"]["b"] # True
评论包含有效的解决方案:
import operator
from functools import reduce # forward compatibility for Python 3
data = { "a" : { "b" : "foo" } }
key = "a.b"
d = reduce(operator.getitem, key.split("."), data)
d == data["a"]["b"] # True
但是,除此之外,我想没有办法利用某种语言功能来做到这一点,这是最初的问题。