如何实现字符串列表与字典键的精准前缀匹配?
解决方案
核心逻辑是优先匹配最长的前缀键——更长的键是短键的扩展,先检查长键能避免短键误匹配长键开头的字符串。
步骤1:预处理字典键
将lookup的键按长度从长到短排序,确保匹配时长键先被检查:
lookup = {"text_text": 1, "text_text_num": 1} # 按键的长度降序排序 sorted_keys = sorted(lookup.keys(), key=lambda x: -len(x))
步骤2:编写匹配函数
遍历排序后的键,检查字符串是否以当前键为前缀,找到第一个匹配的键就返回对应值:
def get_match_result(s): for key in sorted_keys: if s.startswith(key): return lookup[key] return None # 无匹配时返回None
步骤3:测试匹配效果
对目标字符串列表逐一匹配:
my_strings = ["text_text_part1", "text_text_part2", "text_text_another_part3", "text_text_num_something_part3"] for string in my_strings: result = get_match_result(string) print(f"字符串「{string}」匹配结果:{result}")
效果说明
- 前三个字符串不以
text_text_num开头,因此会匹配到短键text_text,返回值1 - 第四个字符串以
text_text_num开头,由于长键优先被检查,直接匹配该键,返回值1
内容的提问来源于stack exchange,提问作者Omega
相关产品推荐
相关产品推荐

