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

Python实现:按B列表元素输出A对应索引,缺失输出-1

修正列表元素索引匹配代码的方案

首先看你的需求:给定列表A和B,要严格按照B中元素的顺序,逐个输出每个元素在A中对应的所有索引(索引+1,空格分隔),如果元素在A里不存在就输出-1。你的原代码输出顺序混乱,核心问题是没有按照B的顺序处理元素,而是按字典键的顺序来输出,同时处理不存在元素的逻辑也绕了弯路。

原代码的问题分析

  • 你先构建了基于B元素的字典,但后续输出时是遍历字典的key,而不是遍历B的每个元素,这直接导致输出顺序和B的顺序完全不匹配
  • 处理不存在的元素时,重复遍历B统计次数再输出,逻辑繁琐还容易出错,同时print的end参数使用不当,导致格式混乱

修正后的代码实现

我们换个思路:先提前把A中每个元素对应的所有索引(+1)整理好,然后逐个遍历B的元素,直接查映射表输出即可,逻辑更清晰,也符合需求:

A = [['a'],['a'],['b'],['c'],['b'],['a']]
B = [['k'],['k'],['a'],['b'],['k']]

# 第一步:构建A中元素到所有索引(+1)的映射字典
a_index_map = {}
for idx, item in enumerate(A):
    elem = item[0]
    # 如果元素不在字典里,先初始化空列表
    if elem not in a_index_map:
        a_index_map[elem] = []
    # 把当前索引+1加入列表
    a_index_map[elem].append(idx + 1)

# 第二步:按B的顺序逐个处理元素,生成结果
output_parts = []
for item in B:
    elem = item[0]
    if elem in a_index_map:
        # 把索引列表转成空格分隔的字符串
        output_parts.append(' '.join(map(str, a_index_map[elem])))
    else:
        output_parts.append('-1')

# 最后把所有结果用空格连接,输出最终内容
print(' '.join(output_parts))

运行结果

执行这段代码后,输出正好是你要的预期结果:
-1 -1 1 2 6 3 5 -1

为什么这样改?

  1. 按B的顺序处理:直接遍历B的每个元素,保证输出顺序完全符合需求
  2. 提前构建映射表:只遍历A一次就完成所有元素的索引收集,效率更高
  3. 格式处理更简洁:用列表收集所有输出片段,最后一次性连接输出,避免了print的end参数带来的格式问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 16:57:40