Python实现字符串与字典键的最长公共后缀匹配并取值
问题解决方法
问题原因
你的原有代码仅判断字典键是否为目标字符串的子串,既没有限制必须匹配后缀,也没有对匹配结果按长度取最长值,因此得到了不符合预期的输出。
实现思路
- 首先筛选所有满足「是目标字符串后缀」的字典键,可使用Python字符串内置的
endswith()方法实现后缀匹配判断 - 从匹配的键中选出长度最长的键,取该键对应的字典值即为结果
可用代码
codeCountry = { 'AFHAS': 'AFGHANISTAN', 'AXUYFF': 'ÅLAND ISLANDS', 'ALUU': 'ALBANIA', 'DZBG': 'ALGERIA', 'ASSQ': 'AMERICAN SAMOA', 'ADDD': 'ANDORRA', 'ANGO': 'ANGOLA', 'ANGI': 'ANGUILLA', 'AQ': 'ANTARCTICA', 'AG': 'ANTIGUA AND BARBUDA', 'AMENI': 'ARMENIA', 'AURI': 'ARUBA', 'AUR': 'ARGENTINA', 'AURII': 'AUSTRALIA' } strToUse = "AMAURI" # 筛选所有匹配后缀的键 matched_keys = [key for key in codeCountry if strToUse.endswith(key)] if matched_keys: # 取长度最长的匹配键 longest_match_key = max(matched_keys, key=lambda k: len(k)) print(codeCountry[longest_match_key]) else: # 无匹配时的自定义处理逻辑 print("未找到匹配结果")
运行上述代码会输出ARUBA,完全符合预期。
性能说明
即使字典有6000组键值对,单次遍历筛选的计算量极小,Python处理耗时在毫秒级,不需要额外做性能优化即可满足日常使用需求。
内容的提问来源于stack exchange,提问作者Laz22434
相关产品推荐
相关产品推荐

