我有一個字典與各種變量類型 - 從簡單的字符串到其他嵌套字典幾個層次深。我需要創建一個指向一個特定的鍵:Python:動態更新字典變量「深度」
dict_update(my_dictionary, value, level1key, *level2key....)
數據從這樣的Web請求來:值對,因此可以在將更新的字典和可以被稱爲像這樣的功能可以使用
data {
'edited-fields': ['level1key-level2key-level3key', 'level1key-level2key-listindex', 'level1key'],
'level1key-level2key-level3key': 'value1',
'level1key-level2key-listindex': 'value2',
'level1key': 'value3'
}
我可以得到原來的值這樣的閱讀:
for field in data["edited-fields"]:
args = field.split("-")
value = my_dictionary
for arg in args:
if arg.isdigit():
arg = int(arg)
value = value[arg]
print(value)
,但不知道如何使用相同的邏輯來編輯它。我無法搜索和替換的價值本身,因爲可能有重複,並有幾個if語句爲每個可能的參數計數不感到pythonic。
實施例:
data {
'edited-fields': ['mail-signatures-work', 'mail-signatures-personal', 'mail-outofoffice', 'todo-pending-0'],
'mail-signatures-work': 'I'm Batman',
'mail-signatures-personal': 'Bruce, Wayne corp.',
'mail-outofoffice': 'false',
'todo-pending-0': 'Call Martha'
}
我想處理像這樣的請求:
for field in data['edited-fields']:
update_batman_db(field, data[field])
def update_batman_db(key-to-parse, value):
# how-to?
# key-to-parse ('mail-signatures-work') -> batman_db pointer ["mail"]["signatures"]["work"]
# etc:
batman_db["mail"]["signatures"]["work"] = value
batman_db["mail"]["outofoffice"] = value # one less level
batman_db["todo"]["pending"][0] = value # list index
沒有必要做這個:'欄=數據[「edited-fields」]。split(「,」)'this enough'fields = data [「edited-fields」]' – Rahul
我很難理解你想要做什麼以及你面對的是什麼障礙究竟。你能否詳細說明一下? – Y2H
我把它分開得到每個關卡的關鍵,所以我可以從這個 食品水果蘋果 到 東西[食物] [水果] [蘋果] –