如何在dict中搜索/遍历特定键以更新python中的值?

2024-04-25 23:07:04 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Python2.x,假设我有以下内容:

target = {'field':'occupation', 'value':'Sanitation Specialist'}

thedict = {'name:':'Wilson','hobbies':['Sports', 'Basketball','Volleyball'], 'job':{
'occupation': 'Janitor',
'years_worked': 5,
'locations': {
'loc_name': 'CompanyA',
'loc_alias': 'The Finest Company',
 },
 'married': 'Yes'
 'children': 5
}};

如何创建一个函数,使我可以用value替换嵌套字段CnestedA中的值,而不必硬编码CnestedA字段实际上嵌套在fieldC(即thedict['job']['occupation'])中的事实?该函数应该采用上面所述的“target”对象和要更新的thedict。请注意,如果“target”对象保持不变,但在dict中,occupation恰好是dict中的一个立即键(即thedict['occupation']),则函数仍然可以工作。如果它没有找到field,那么thedict就不会发生任何事情。你知道吗


Tags: 对象函数namefieldtargetvaluejobloc
1条回答
网友
1楼 · 发布于 2024-04-25 23:07:04

你可以用递归搜索算法来实现,但是效率很低。相反,最好是重新组织数据或创建一个辅助数据结构来记录每个字段所在的位置。你知道吗

要重新组织数据以进行有效的查找,您需要取消dict的嵌套,将所有键移到顶级dict。如果您需要先前在键路径中编码的信息,请将其放入值中。然后,要执行更新,可以使用

denested_dict[key] = value

或者

denested_dict[key].data = value

如果您创建了某种类型的值对象,使用data字段作为值,使用path字段记录旧路径。你知道吗

如果不方便重新组织数据,可以创建一个dict,将每个键映射到具有该键的dict。然后,要更新一个任意嵌套的键,您需要使用新的dict来查找dict来更新和更新它。你知道吗

index_dict[key][key] = value

相关问题 更多 >