[英]Recursively replace characters in a python3 dictionary
我已经看到很多关于递归替换字典中特定字符的答案。 但那些是字典中的字典。
我正在寻找一种解决方案来递归替换 python 字典的所有值中的某些字符或单词,但字典值可以是字符串、int、dict 或数组。 例子,
pydict = {
'type': 'identity1',
'desc': ['tan', 'grey', 'blue_brown'],
'location': {
'warehouse': "area '1'",
'warehouse2': 'area 2'
},
'quant': 2
}
replacement_dict = {'tan': 'orange', "'": '"', '2': '3'}
因此,pydict值中与replacement_dict键匹配的每个单词或字符我都想用replacement_dict值替换。
这很简单,您首先处理所有要加深递归的情况,即列表和字典,然后应用替换。 我假设所有实际数据都是字符串类型,但我确信您可以处理更多案例(我只是不想输入它们)。 代码如下。
pydict = {'type': 'identity1', 'desc': ['tan', 'grey', 'blue_brown'], 'location': {'warehouse': "area '1'", 'warehouse2': 'area 2'}, 'quant': 2}
replacement_dict = {'tan': 'orange', "'": '"', '2': '3'}
def replace_rec(d):
if type(d)==list:
d = [replace_rec(x) for x in d]
elif type(d)==dict:
for k in d.keys():
d[k] = replace_rec(d[k])
else:
for k, v in replacement_dict.items():
d = str(d).replace(k,v)
return d
r = replace_rec(pydict)
print(pydict)
print(r)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.