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

Python遍历嵌套列表匹配元素 生成操作符关联字典方法

嵌套列表操作符关联关系实现方案

问题背景

待处理的嵌套表达式列表结构如下:

expr_list = [['t', '=', 'a', '+1', 'b'], ['s', '=', 'd', '+2', 'e'], ['p', '=', 't', '*1', 'c'], ['q', '=', 's', '/1', 'f'], ['y', '=', 'p', '-1', 'q']]

需要基于列表内的变量引用关系生成操作符映射字典,最终期望输出:

{'+1': '*1', '+2': '/1', '*1': '-1', '/1': '-1'}

需求规则

  • 逐个取每个子列表的首元素(即被赋值的变量名),和所有子列表的第3位、第5位元素(即表达式的两个运算数,对应Python索引2、4)做全量匹配
  • 匹配成功后,将*变量定义所在子列表的第4位操作符(对应Python索引3)*作为字典键,匹配到的引用位置所在子列表的第4位操作符作为字典值,存入结果字典

原有代码错误点

  • 仅比对了当前子列表自身的运算数,没有跨所有子列表做全量匹配
  • 存在语法错误:i[i][3]中i是数字索引,不是列表对象,无法下标取值
  • 初始用列表存储结果,和最终输出字典的需求不匹配
  • 变量命名用了list,会覆盖Python内置列表类型,属于不规范写法

正确实现代码

expr_list = [['t', '=', 'a', '+1', 'b'], ['s', '=', 'd', '+2', 'e'], ['p', '=', 't', '*1', 'c'], ['q', '=', 's', '/1', 'f'], ['y', '=', 'p', '-1', 'q']]
op_connector = {}

for source in expr_list:
    defined_var = source[0]
    source_op = source[3]
    # 遍历所有子列表查找变量引用
    for target in expr_list:
        if target[2] == defined_var or target[4] == defined_var:
            op_connector[source_op] = target[3]

print(op_connector)

逻辑说明

  • 第一层循环遍历所有赋值表达式,拿到当前表达式定义的变量名、对应的操作符
  • 第二层循环遍历所有表达式,检查运算数位置是否存在对当前定义变量的引用
  • 找到引用后直接写入键值对,同键重复赋值会自动覆盖,符合最终输出要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:25:18