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

如何遍历列表A匹配列表B中包含其元素的项并生成指定字典列表

解决方案

为什么zip函数无法满足需求

zip(A,B) 会按照索引位置一一配对两个列表的元素,只有当A和B的元素顺序完全匹配时才能得到正确结果,你当前两个列表顺序不对应,自然无法拿到正确配对。

基础实现方案

嵌套两次循环即可完成匹配,输出顺序和A的顺序保持一致:

dict_list = []
for a in A:
    for b in B:
        if a in b:
            dict_list.append({'prefix': a, 'shape': b})
            # 若每个a仅对应一个b,找到后添加break跳出内层循环,提升效率
            break

提示:如果单个a可能匹配多个B中的元素,删除上述代码中的break即可保留所有匹配结果。

千条以上数据的性能优化方案

当两个列表数据量较大时,嵌套循环的O(n*m)时间复杂度会导致性能偏低,可以用生成器表达式优化查询逻辑:

dict_list = []
for a in A:
    # 查找B中第一个包含a的元素,未匹配到则返回None跳过
    matched_b = next((b for b in B if a in b), None)
    if matched_b:
        dict_list.append({'prefix': a, 'shape': matched_b})

上述逻辑完全适配你补充的URL匹配场景,in判断子串存在不限制子串的位置,不管是前缀、中间还是后缀片段都可以正常匹配。

内容的提问来源于stack exchange,提问作者S.Slusky

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:45:02