Python匹配字典键替换列表元素时输出原列表问题求解
错误原因
- 核心错误是替换前调用了
i.upper()将原字符串转为全大写,但字典中存储的键是大小写敏感的德语月份(首字母大写、其余小写),全大写后的字符串不存在与字典键匹配的子串,因此替换完全不生效,还会错误修改原字符串的大小写。 - 循环逻辑冗余:外层遍历字典键、内层遍历列表的写法,会多次遍历整个列表,效率较低。
修复代码
data = ['18. September 2021', '7. Juni 1946', 'Mai 2021, 19', '16.9.2021'] dictionary = {"Januar":"January","Februar":"February","März":"March","April":"April","Mai":"May","Juni":"June", "Juli":"July","August":"August","September":"September","Oktober":"October","November":"November", "Dezember":"December"} # 优化循环顺序:遍历每个列表元素,匹配字典键做替换 for idx, item in enumerate(data): for de_month, en_month in dictionary.items(): if de_month in item: data[idx] = item.replace(de_month, en_month) # 匹配到对应月份后即可跳出内层循环,避免无效遍历 break print(data)
输出结果
运行修复后的代码,得到预期输出:
['18. September 2021', '7. June 1946', 'May 2021, 19', '16.9.2021']
内容的提问来源于stack exchange,提问作者Aniiya0978
相关产品推荐
相关产品推荐

