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

如何在Python中对字典列表进行任意字符模糊搜索?

实现Python字典列表的模糊搜索

你的核心需求是把原来的精确匹配改成子串模糊匹配,需要遍历每个字典的所有值,将值和关键词统一转为字符串后检查子串是否存在。以下是具体实现:

代码示例

my_list = [
    {"name": "MrA", "age": 20, "height": 185},
    {"name": "MrsB", "age": 28, "height": 192},
    {"name": "MrC", "age": 18, "height": 170},
    {"name": "MrD", "age": 50, "height": 177},
    {"name": "MrsE", "age": 32, "height": 200},
    {"name": "Mrs18F", "age": 21, "height": 175}
]

# 定义搜索关键词(可以是字符串或数字)
keywords = "Mrs"
# keywords = 18

# 统一将关键词转为字符串,兼容数字/字符串类型的搜索
keywords_str = str(keywords)

# 模糊搜索逻辑:遍历每个字典,只要任意值转字符串后包含关键词就保留
result = [
    item for item in my_list 
    if any(keywords_str in str(value) for value in item.values())
]

print(result)

逻辑说明

  1. 统一类型:把关键词转成字符串,不管输入是数字(如18)还是字符串(如"Mrs"),都能处理;同时把每个字典的值也转成字符串,确保数字类型的字段(如age、height)也能被搜索到。
  2. 任意字段匹配:用any()函数判断,只要字典里有一个字段的值包含关键词,就将该字典加入结果列表。

测试结果

  • 当keywords = "Mrs"时,输出符合预期:
    [{"name": "MrsB", "age": 28, "height": 192}, {"name": "MrsE", "age": 32, "height": 200}, {"name": "Mrs18F", "age": 21, "height": 175}]
    
  • 当keywords = 18时,输出符合预期:
    [{"name": "MrA", "age": 20, "height": 185}, {"name": "MrC", "age": 18, "height": 170}, {"name": "Mrs18F", "age": 21, "height": 175}]
    

可选优化(忽略大小写)

如果需要不区分大小写的搜索,可以把关键词和值都转成小写:

keywords_str = str(keywords).lower()
result = [
    item for item in my_list 
    if any(keywords_str in str(value).lower() for value in item.values())
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 22:39:18