You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何替换字典指定键对应字符串值中的数字为#字符?

解决方案

你现有代码的核心问题是只遍历打印了字符串里的数字,没有完成替换逻辑,也没有把处理后的结果回写到字典的对应键位,同时缺少值类型判断,遇到非字符串类型的值会触发报错。

Python实现代码

逐字符替换版本(无额外依赖,逻辑直观)

def convert(input_dict, keys):
    for key in keys:
        # 校验键存在,且对应值为字符串类型
        if key in input_dict and isinstance(input_dict[key], str):
            char_list = []
            for c in input_dict[key]:
                char_list.append('#' if c.isdigit() else c)
            # 将处理完成的字符串回写到字典
            input_dict[key] = ''.join(char_list)
    return input_dict

正则简洁版本

import re

def convert(input_dict, keys):
    for key in keys:
        if key in input_dict and isinstance(input_dict[key], str):
            input_dict[key] = re.sub(r'\d', '#', input_dict[key])
    return input_dict

测试验证

if __name__ == "__main__":
    test_dict = {"name":"Jone","age":"40 years","phone":"88777444"}
    target_keys = ["age","phone"]
    print(convert(test_dict, target_keys))

运行后输出和预期完全一致:

{'name': 'Jone', 'age': '## years', 'phone': '########'}

注意事项

  • 上述实现会直接修改传入的原始字典,如果需要保留原始字典数据,可以在处理前先做一份字典拷贝:from copy import deepcopy; new_dict = deepcopy(input_dict),后续针对new_dict做处理即可。
  • 必须增加字符串类型校验,如果字典中对应键的值是数字、列表等非字符串类型,直接做字符遍历或正则替换会抛出类型错误。

其他语言实现思路

核心逻辑和Python完全一致,都是三步:

  1. 遍历指定键列表,判断键在字典/对象/Map中存在
  2. 校验对应值为字符串类型
  3. 将字符串中所有数字字符替换为#后,回写到对应键位
  • JavaScript:可直接用字符串的replace(/\d/g, '#')方法完成替换
  • Java:调用字符串的replaceAll("\\d", "#")方法处理后put回Map即可
  • Go:遍历rune切片判断是否为数字,替换后拼接为字符串回写map即可

内容的提问来源于stack exchange,提问作者Sumit Dadwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 14:54:27