繁体   English   中英

递归替换python3字典中的字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM