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

Python:如何利用列表实现字符串字符的对应替换?

解决字符映射替换的重复问题

你的核心问题是循环替换会导致已替换的字符被二次匹配,而直接链式调用replace又太繁琐。最简洁高效的解决方式是先建立字符映射字典,再逐个字符完成替换,这样每个字符只会被处理一次,完全避免重复替换的问题。

实现代码

characters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", ".", ",", " ", "!", "?"]
characters2 = ['h', 'i', '.', 'u', 'o', 'x', 'q', 'b', 'y', 'z', 's', 'd', 'm', 'w', 'k', 'n', 'j', '?', 'a', 'v', 't', 'r', 'e', 'f', 'c', ' ', '!', 'l', 'g', 'p', ',']

# 建立字符映射字典
char_map = dict(zip(characters, characters2))

# 待加密字符串
input_str = "string"
# 逐个字符替换并拼接成结果
encrypted_str = ''.join([char_map[char] for char in input_str])

print(encrypted_str)  # 输出: av?ywq

原理说明

  1. 用zip把两个一一对应的列表打包成键值对,再转成字典char_map,这样每个原字符都能直接查到对应的加密字符,查询效率是O(1)。
  2. 遍历输入字符串的每个字符,通过字典直接获取替换后的字符,最后用join拼接成完整字符串。整个过程每个字符只处理一次,不会出现替换后字符被再次匹配的问题。

如果需要处理不在映射列表里的字符,可以给字典查询加个默认值,比如char_map.get(char, char),这样未知字符会保留原样。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:31:32