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

Python如何提取两嵌套列表相同元素的子列表位置并存储计算

实现方案

你原有代码仅对比了两个子列表的首个元素,没有遍历所有子元素、记录对应位置,无法得到预期结果,可按如下逻辑实现:

完整代码

list1 = [['*1', '*2'], ['*3', '*4'], ['*5', '*6', '+1', '+4'], ['+2', '+5', '+3']]
list2 = [['*2', '*6', '*1', '+4', '*4'], ['*3', '*5', '+3', '+5'], ['+1'], ['+2']]

# 生成list1元素-子列表序号映射
list1_location = {}
for sub_idx, sub_list in enumerate(list1, start=1):
    for elem in sub_list:
        list1_location[elem] = str(sub_idx)

# 生成list2元素-子列表序号映射
list2_location = {}
for sub_idx, sub_list in enumerate(list2, start=1):
    for elem in sub_list:
        list2_location[elem] = str(sub_idx)

# 计算位置差值映射
diff_dict = {}
for elem in list1_location:
    pos1 = int(list1_location[elem])
    pos2 = int(list2_location[elem])
    diff_dict[elem] = str(pos1 - pos2 + 1)

逻辑说明

  • enumerate(迭代对象, start=1)可以在遍历列表时直接获取从1开始计数的索引值,不需要手动维护计数变量,刚好匹配你需要的子列表序号规则
  • 两层遍历:外层遍历拿到每个子列表的序号和内容,内层遍历子列表内的所有元素,将元素作为键、子列表序号转为字符串后作为值存入字典,即可完成前两个位置映射的需求
  • 由于两个嵌套列表的元素完全一致,遍历任意一个位置字典的所有键,取出两个字典中对应位置的整数值做pos1 - pos2 +1运算,结果转回字符串存入差值字典即可

运行结果

运行代码后得到的三个字典键值对和你给出的期望输出完全一致(Python3.7+字典保留插入顺序,键的排列顺序差异不影响结果正确性):

list1_location = {'*1': '1', '*2': '1', '*3': '2', '*4': '2', '*5': '3', '*6': '3', '+1': '3', '+4': '3', '+2': '4', '+5': '4', '+3': '4'}
list2_location = {'*2': '1', '*6': '1', '*1': '1', '+4': '1', '*4': '1', '*3': '2', '*5': '2', '+3': '2', '+5': '2', '+1': '3', '+2': '4'}
diff_dict = {'*1': '1', '*2': '1', '*3': '1', '*4': '2', '*5': '2', '*6': '3', '+1': '1', '+4': '3', '+2': '1', '+5': '3', '+3': '3'}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:45:32