最好的辦法是寫自己的語法,您會解析。你必須使用一個永遠不會出現在密鑰中的charachter,一個流行的例子是.
,但相似,$
,|
也適用。
def get(d, key):
kp = key.split('.')
for k in kp:
d = d[k]
return d
d = {'a': {'b': 2}}
get(d, 'a.b')
>>> 2
編輯更新的問題:
所以你要能得到特別是在每個這種情況下A·B的值的列表?如果是的話,你仍然可以使用上面,像這樣
d = {
"word":{"a":{"b":2}},
"hello":{"a":{"b":1}},
"mouse":{"a":{"b":5}},
}
# nesting calls to get just to show it is flexible like that
[get(get(d, k), 'a.b') for k in d.keys()]
# if you wanted to generate a dict of {"word": val} it would look like this
{k:get(get(d, k), 'a.b') for k in d.keys()}
它甚至工作方法,如果你的可變部分是在中間
d = {
"x": {"word":{"a":{"b":2}}},
"x": {"hello":{"a":{"b":1}}},
"x": {"mouse":{"a":{"b":5}}},
}
# using more calls to get just to show it is flexible like that
[get(get(d, 'x.'+k), 'a.b') for k in get(d, 'x').keys()]
什麼是使用這種背景下? – mattsap
這可能是一個「xy問題」的情況 - 以這種方式通過字符串引用嵌套的字典項目是不可能的,但是您想用這種方式做什麼很可能......用另一種方式。那麼,你想怎麼做呢? – Roberto
Python有一個'eval'函數可能會使它工作 - 但我同意以前的意見。 – usr2564301