将值写入嵌套字典并使用列表指定路径

时间:2019-07-16 14:35:10

标签: python json python-3.x dictionary

我需要更新嵌套字典中的值,但是我有一个列表,列出了我需要获得的所有键以获取总价值。但是,此列表是自动生成的,层数并不总是相同。

词典示例:

{'pop_up_message': {'': []}, 'widgets': {'separator_dropdown': {'widget': '', 'location': {'columnspan': 1, 'row': 0, 'column': 11, 'sticky': 'e', 'rowspan': 1}, 'selected_option': '', 'position': 5}, 'go': {'widget': '', 'location': {'columnspan': 1, 'row': 0, 'column': 6, 'sticky': 'nsew', 'rowspan': 1}, 'position': 4}, 'middle_label': {'widget': '', 'type': 'label', 'location': {'columnspan': 2, 'row': 1, 'column': 5, 'sticky': 'nsew', 'rowspan': 1}, 'default_name': 'Translated File', 'position': 7}, 'export': {'widget': '', 'location': {'columnspan': 2, 'row': 0, 'column': 5, 'sticky': 'nsew', 'rowspan': 1}, 'default_name': 'Export to .txt', 'position': 10}, 'quit': {'widget': '', 'location': {'columnspan': 1, 'row': 1, 'column': 1, 'sticky': 'nsew', 'rowspan': 1}, 'position': 9}, 'separator_message': {'widget': '', 'type': 'label', 'location': {'columnspan': 1, 'row': 0, 'column': 11, 'sticky': 's', 'rowspan': 1}, 'default_name': 'Define Separator', 'position': 2}, 'output_table': {'height': 25, 'position': 8, 'widget': '', 'type': 'scroll_text', 'location': {'columnspan': 11, 'row': 1, 'column': 1, 'sticky': 'nsew', 'rowspan': 1}, 'default_state': 'disabled'}, 'input_table': {'height': 10, 'position': 6, 'widget': '', 'type': 'scroll_text', 'location': {'columnspan': 11, 'row': 1, 'column': 1, 'sticky': 'nsew', 'rowspan': 1}, 'default_state': 'normal'}, 'import_file': {'widget': '', 'location': {'columnspan': 2, 'row': 1, 'column': 4, 'sticky': 'nsew', 'rowspan': 1}, 'position': 3}, 'clear': {'widget': '', 'location': {'columnspan': 1, 'row': 0, 'column': 11, 'sticky': 'nsew', 'rowspan': 1}, 'position': 11}, 'input_message': {'widget': '', 'type': 'label', 'location': {'columnspan': 2, 'row': 1, 'column': 5, 'sticky': 'nsew', 'rowspan': 1}, 'default_name': 'Insert / Import FIX Message', 'position': 1}}, 'tab_restriction': 'EMC', 'name': 'FIX Translator'}

键列表:

['widgets', 'separator_dropdown', 'location', 'row']

要更改的值: 从03

我有一个嵌套的字典(我是从JSON文件读取的)。它包含一个Tkinter应用程序的配置。使用Tkinter,我构建了一个界面,可以在其中读取配置并将其显示在dict键为tk的框架上。标签和字典值是tk.Entry。

这个想法是,我可以更新(输入小部件)界面,并在从输入小部件中提取所有数据并更新JSON文件时

现在,我有一份tk清单。在字典中输入值和关联的“路径”,现在需要更新该字典并将其另存为JSON。

1 个答案:

答案 0 :(得分:2)

您可以使用递归从字典中获取和设置:

json

您可以使用import json jsonData = json.dumps(dictionary) with open("output.json", "w"): 模块保存字典

{{1}}