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

Python中如何通过类SQL语句过滤字典列表?

类SQL语法筛选字典列表实现方案

你有一组结构统一的嵌套字典列表,示例如下:

dictlist = [
    [{'name': '"fight club"', 'rank': 12, 'budget': 450000}, {'name': '"Interstellar"', 'rank': 26, 'budget': 700000}],
    [{'name':'"se7en"', 'rank': 19, 'budget': 200000}, {'name': '"Hamilton"','rank': 107, 'budget': 650000}]
]

需要支持类SQL语句(如SELECT (name,budget) FROM movies WHERE budget=450000)来完成字段筛选和数据过滤,以下是具体实现方案:

实现步骤

1. 扁平化嵌套字典列表

原数据是二维列表,先转成一维列表方便后续处理:

def flatten_dictlist(nested_list):
    return [item for sublist in nested_list for item in sublist]

2. 解析类SQL语句

通过字符串处理提取目标字段和过滤条件:

def parse_sql(sql):
    # 提取SELECT部分的字段
    select_part = sql.split('SELECT')[1].split('FROM')[0].strip()
    fields = [f.strip() for f in select_part.strip('()').split(',')]
    
    # 提取WHERE部分的条件(无WHERE时返回None)
    where_part = sql.split('WHERE')[1].strip() if 'WHERE' in sql else None
    condition = None
    if where_part:
        key, val = where_part.split('=')
        # 自动转换值的类型(优先整数,否则保留字符串)
        try:
            val = int(val)
        except ValueError:
            val = val.strip('"\'')
        condition = (key.strip(), val)
    
    return fields, condition

3. 执行筛选和字段提取

结合扁平化数据与解析结果,完成数据处理:

def query_dictlist(dictlist, sql):
    flat_list = flatten_dictlist(dictlist)
    fields, condition = parse_sql(sql)
    
    # 按条件过滤数据
    if condition:
        key, val = condition
        filtered = [item for item in flat_list if item.get(key) == val]
    else:
        filtered = flat_list
    
    # 提取指定字段(自动忽略不存在的字段)
    result = [{field: item[field] for field in fields if field in item} for item in filtered]
    return result

测试示例

# 测试SQL语句
sql = 'SELECT (name,budget) FROM movies WHERE budget=450000'
result = query_dictlist(dictlist, sql)
print(result)
# 输出:[{'name': '"fight club"', 'budget': 450000}]

扩展说明

  • 上述实现支持基础的SELECT字段选择和WHERE等值条件过滤
  • 若需支持更复杂条件(如>、<、LIKE)或多条件组合,可扩展parse_sql函数,增加运算符识别和条件拼接逻辑
  • 若字段名或值包含特殊字符(逗号、等号),可改用正则表达式实现更精准的字符串解析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:35:16