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

如何通过元组列表匹配替换字符串字符实现密码加密?

解决字符映射加密问题

你需要将输入字符串的每个字符,通过tup_list里的元组(第一个元素为原字符,第二个为加密符号)完成替换,核心是建立字符到加密符号的映射关系,再逐个完成替换。

现有代码的问题

  1. flip_method逻辑错误:遍历input时,sub是单个字符(比如'c'),调用sub[1]会触发索引越界错误——单个字符没有第二个元素。
  2. 尝试的循环逻辑错误:x = INPUT是完整字符串,i是单个字符,x in i相当于判断完整字符串是否包含在单个字符中,永远为假,因此输出空列表。

正确实现方案:用字典建立映射(高效易扩展)

把元组列表转换成字典,利用字典的键值对快速查找对应关系,是处理这类字符映射最简洁高效的方式。

def encrypted_list(input_str='cab'):
    tup_list = [('a', '#'), ('b', '!'), ('c', '@')]
    # 将元组列表转为字典:{'a':'#', 'b':'!', 'c':'@'}
    char_map = {char: code for char, code in tup_list}
    
    # 遍历输入字符,查字典获取加密符号,最后拼接成字符串
    encrypted_str = ''.join([char_map[char] for char in input_str])
    print(encrypted_str)

# 测试调用
encrypted_list()  # 输出:@#!

逻辑解释

  1. 字典映射:{char: code for char, code in tup_list} 是字典推导式,直接将元组列表转换为键值对结构,后续扩展字母只需在tup_list中添加新元组即可。
  2. 逐个替换:[char_map[char] for char in input_str] 遍历输入的每个字符,通过字典快速匹配加密符号,最后用''.join()将列表拼接成完整的加密字符串。

可选容错处理

如果输入字符串包含tup_list中未定义的字符,可以用get方法避免报错,同时保留原字符:

encrypted_str = ''.join([char_map.get(char, char) for char in input_str])
# 示例:输入'cad'会输出@#d

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:52:54