簡體   English   中英

如何更新 Python 中的嵌套字典?

[英]How to update the nested dictionary in Python?

我有一本名為old_dict的字典,它有一個包含整個必填字段的模板。 我希望它使用我收到的選擇性字段進行更新。 為什么字典update方法在這里不起作用? 接下來,更新這個的正確方法是什么? 我是否需要循環檢查每個鍵和值,然后檢查值本身是否有鍵和值。 如果是,那么繼續迭代。 這樣做的方法是什么? 我正在尋找簡單而不是遞歸解決方案。

這是我當前的代碼:

old_dict = {'account': {'user': None, 'displayName': None, 'domain': '', 'dnsSrv': False, 'proxies': [{'addr': None, 'port': 5060}], 'vendor': 2, 'auth': {'user': None, 'passwd': None}, 'transport': 2, 'regInterval': 3600, 'avpfInterval': 3, 'sipsUri': False, 'avpf': False, 'reqRegister': True, 'pubPresenceInfo': False}}
print(old_dict)

new_dict = {'account': {'user': '007', 'dnsSrv': True, 'proxies': [{'addr': '10.10.10.201'}], 'pubPresenceInfo': False}}
print(new_dict)

old_dict.update(new_dict)
print("updated data")
print(old_dict)

我可以看到 displayName、domain 和其他字段現在都不見了。 它只是用更新的帳戶密鑰替換了帳戶密鑰。 如何告訴 Python 在那里更新單個項目?

old_dict 是一個單獨的字典 old_dict['account']

在這種情況下,您將用新的 dict 對象完全覆蓋 old_dict['account'] dict 對象。 如果要更新現有對象,則需要更新該對象本身:

old_dict['account'].update(new_dict['account'])

感謝@Tomerikoo 修復代理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM