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

Python字典如何实现非精确匹配?类似SQL LIKE的查询方法

Python实现字典键的模糊匹配(类似SQL LIKE)

方法1:遍历字典匹配前缀

直接遍历字典的键,用startswith()判断是否匹配目标前缀,适合规模较小的字典。

test_dict = {'EU6XNAS': '23TEST1'}

def get_value_by_prefix(d, prefix):
    for key, val in d.items():
        if key.startswith(prefix):
            return val
    return None

# 测试前缀查询
print(get_value_by_prefix(test_dict, 'EU6'))  # 输出:23TEST1

如果存在多个键匹配同一前缀,这个函数会返回第一个匹配的值;若需要所有匹配结果,可改为收集到列表中返回。

方法2:预构建前缀映射字典

如果字典规模大、查询频繁,提前构建前缀到值的映射字典,能实现O(1)时间复杂度的查询,代价是占用更多内存。

test_dict = {'EU6XNAS': '23TEST1'}

prefix_map = {}
for key, val in test_dict.items():
    # 为每个键生成所有可能的前缀并映射到对应值
    for i in range(1, len(key)+1):
        prefix = key[:i]
        prefix_map[prefix] = val  # 重复前缀会被后续值覆盖

# 直接通过前缀查询
print(prefix_map.get('EU6'))  # 输出:23TEST1

方法3:正则表达式实现复杂模糊匹配

如果需要更灵活的匹配规则(比如包含特定字符、后缀匹配等),可以用正则表达式,适配类似SQL LIKE的多种模糊场景。

import re

test_dict = {'EU6XNAS': '23TEST1'}

def get_value_by_regex(d, pattern):
    match_regex = re.compile(pattern)
    for key, val in d.items():
        if match_regex.match(key):
            return val
    return None

# 匹配以EU6开头的键(对应SQL LIKE 'EU6%')
print(get_value_by_regex(test_dict, r'^EU6'))  # 输出:23TEST1

你可以根据需求调整正则表达式,比如用r'.*EU6.*'匹配包含EU6的键,对应SQL LIKE '%EU6%'。

内容的提问来源于stack exchange,提问作者user3420305

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:42:20