Python如何将列表内字符串的字符按字典映射替换为对应整数
原代码错误原因
- 变量名使用了Python内置关键字
list,覆盖了列表类型的内置定义,会引发后续逻辑异常 - 列表对象没有
replace()方法,该方法仅适用于字符串类型,直接对列表调用会直接报错 - 字符映射替换的逻辑错误:需要遍历列表中的每个字符串元素,再对字符串的单个字符做映射转换,不能直接对整个列表做替换操作
正确实现代码
你需要的是把字符串中每个字符(包括大写A)按映射转为对应整数,以下是适配需求的实现:
# 定义字符映射字典,避免用dict作为变量名 char_map = {'a': 101, 'h': 111} # 定义输入列表,避免用list作为变量名 input_list = ['haha', 'haaa'] result = [] for content in input_list: # 遍历每个字符,统一转小写后匹配映射,适配大写字符的识别需求 converted_chars = [char_map[char.lower()] for char in content] result.append(converted_chars) print(result)
运行后输出结果为:[[111, 101, 111, 101], [111, 101, 101, 101]]
如果你需要把每个字符串对应的所有整数拼接为一个完整的整数,可以额外加一步处理:
# 拼接为完整整数 final_int_result = [] for item in result: int_str = ''.join(map(str, item)) final_int_result.append(int(int_str)) print(final_int_result)
运行输出为:[111101111101, 111101101101]
注意事项
- 后续编码请避免使用Python内置关键字(
list、dict、str等)作为自定义变量名 - 如果存在未收录在映射字典中的字符,可以用
get()方法设置默认值避免报错,比如char_map.get(char.lower(), 0),未匹配到的字符默认返回0,你可以根据需求调整默认值
内容的提问来源于stack exchange,提问作者Alfred
相关产品推荐
相关产品推荐

