使用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
就不会发生任何事情。你知道吗
你可以用递归搜索算法来实现,但是效率很低。相反,最好是重新组织数据或创建一个辅助数据结构来记录每个字段所在的位置。你知道吗
要重新组织数据以进行有效的查找,您需要取消dict的嵌套,将所有键移到顶级dict。如果您需要先前在键路径中编码的信息,请将其放入值中。然后,要执行更新,可以使用
或者
如果您创建了某种类型的值对象,使用
data
字段作为值,使用path
字段记录旧路径。你知道吗如果不方便重新组织数据,可以创建一个dict,将每个键映射到具有该键的dict。然后,要更新一个任意嵌套的键,您需要使用新的dict来查找dict来更新和更新它。你知道吗
相关问题 更多 >
编程相关推荐