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

Python中如何实现列表映射?附具体需求及代码片段

将Token句子映射为索引数字的高效实现方案

我来帮你解决这个Token到索引的映射问题!你已经明确了需求:把Token_Sentence里的每个单词转换成Mapping对应的索引值,得到目标的数字列表。先再明确下你的输入和期望输出:

输入数据

Token_Sentence = [['This','is','a','book'],['This','is','a','cat'],['Those','are','two','books']]
Mapping = [['This',1],['is',2],['a',3],['book',4],['cat',5],['Those',6],['are',7],['two',8],['books',9]]

期望输出

[[1,2,3,4],[1,2,3,5],[6,7,8,9]]

优化你的实现思路

你现在写的三重嵌套循环虽然能实现功能,但效率偏低(时间复杂度为O(N*M*K),N是句子数,M是单句Token数,K是映射表长度)。更高效的方式是先把Mapping转换成字典——字典的哈希查找是O(1)时间复杂度,能大幅提升处理速度,尤其是当你的映射表或Token列表很大的时候。

完整高效代码

Token_Sentence = [['This','is','a','book'],['This','is','a','cat'],['Those','are','two','books']]
Mapping = [['This',1],['is',2],['a',3],['book',4],['cat',5],['Those',6],['are',7],['two',8],['books',9]]

# 第一步:将二维映射列表转为字典,方便快速查找
token_to_index = {token: idx for token, idx in Mapping}

# 第二步:用列表推导式完成批量映射
result = [[token_to_index[token] for token in sentence] for sentence in Token_Sentence]

print(result)  # 输出:[[1, 2, 3, 4], [1, 2, 3, 5], [6, 7, 8, 9]]

如果你想完善原来的嵌套循环代码

如果你坚持要基于你原来的嵌套循环思路完成,记得在找到匹配的Token后加上break,避免不必要的循环遍历:

Token_Sentence = [['This','is','a','book'],['This','is','a','cat'],['Those','are','two','books']]
Mapping = [['This',1],['is',2],['a',3],['book',4],['cat',5],['Those',6],['are',7],['two',8],['books',9]]

Token_Sequence = []
# 遍历每一个句子
for a in range(len(Token_Sentence)):
    current_sentence = []
    # 遍历当前句子里的每个Token
    for b in range(len(Token_Sentence[a])):
        target_token = Token_Sentence[a][b]
        # 遍历映射表找对应索引
        for c in range(len(Mapping)):
            if target_token == Mapping[c][0]:
                current_sentence.append(Mapping[c][1])
                break  # 找到匹配后立即跳出循环,节省资源
    Token_Sequence.append(current_sentence)

print(Token_Sequence)  # 输出期望结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:33:49