我正在編寫一個Python腳本,其中給出了格式爲['key1', 'key2', 'key2.key21.key211', 'key2.key22', 'key3']
的字符串列表。以編程方式訪問字典中任意嵌套深度的值
列表中的每個值對應於在字典中的條目,以及用於結構類似於條目,它們對應於(在本例),嵌套在'key21'
密鑰'key211'
,本身嵌套在'key2'
。
上面所列內容相應於字典:
x = {
'key1' : 'value1',
'key2' : {
'key21' : {
'key211': 'value211'
},
'key22' : 'value22'
},
'key3' : 'value3'
}
的名稱不一定是定期爲key(n)+
;例如,它們可以是food.vegetables.potato
的形式。我唯一的保證是鍵名自己,在字典中不包含.
字符,並且該字典確實包含原始列表中引用的所有條目。
我的問題是,給定這樣的字符串列表,我如何以編程方式訪問字典中的相應條目?我可以想出使用eval()
的解決方案,以及僅使用遍歷/搜索的解決方案,但我想避免調用eval()
,並且我得到的印象是遍歷與比較會很慢(因爲dict
s不是搜索樹),並且會引起很多令人討厭的異常處理。
您應該自己嘗試一下,然後編輯問題以包含您提出的代碼。 – quamrana
讓我看看我是否正確地讀你的問題:你需要做的是將每個關鍵字(字符串)分割到''.'',然後訪問'original_dict [k [0]] [k [1]] [k [ 2]] ...'因爲有多少結果k有? –
@兩位正好。 quamrana我會在大約半小時內用一個試探性的解決方案進行更新。 – Jules