如何返回仅含key+value为回文的字典?Python报KeyError怎么解决
报错原因
- 核心问题是判定拼接结果不是回文、删除对应键后没有终止内层判断循环,内层循环会继续执行下一个索引的比对逻辑,再次尝试删除已经被移除的键,最终触发KeyError。
- 额外可优化点:无需手写双指针逻辑判断回文,Python可直接用
字符串 == 字符串[::-1]的写法快速完成回文判定,代码更简洁也避免逻辑漏洞。
修复后可运行代码
def isPalindrome(dict1): # 遍历字典拷贝的键值对,规避遍历过程中修改原字典带来的异常 for key, value in dict1.copy().items(): result = key + value # 非回文直接删除对应键 if result != result[::-1]: del dict1[key] return dict1 dictionary = { "kaj":"ak", "ado":"lescent", "gu":"ug" } print(isPalindrome(dictionary))
运行输出
{'kaj': 'ak', 'gu': 'ug'}
内容的提问来源于stack exchange,提问作者Zukashi
相关产品推荐
相关产品推荐

