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

Python实现两列表合并匹配,忽略lst2键末尾下划线的方法

实现方案

你可以先对lst2子列表的首元素做末尾下划线去除预处理,匹配成功后替换为lst1中的标准无下划线字段,再按原有逻辑排序即可,参考实现如下:

lst3 = sorted(
    [
        [std_key, item[1]] 
        for item in lst2 
        if (std_key := item[0].removesuffix('_')) in lst1
    ],
    key=lambda x: lst1.index(x[0])
)

如果使用的Python版本低于3.9(不支持removesuffix语法),可以替换为兼容写法:

lst3 = sorted(
    [
        [std_key, item[1]]
        for item in lst2
        for std_key in [item[0][:-1] if item[0].endswith('_') else item[0]]
        if std_key in lst1
    ],
    key=lambda x: lst1.index(x[0])
)

逻辑说明

  • 遍历lst2的每个子项时,先对首元素做末尾单个下划线的裁剪,得到待匹配的标准键std_key
  • 如果std_key存在于lst1中,就用该标准键替换原首元素,保留值构造新的子项
  • 最后按lst1的字段顺序排序,和原有逻辑完全对齐
    如果你的场景允许首元素末尾存在多个下划线,需要全部裁剪后匹配,把removesuffix('_')替换为rstrip('_')即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 19:18:02