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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 09:57:01