You need to enable JavaScript to run this app. 如何为重复列表元素按首次出现顺序分配对应序数标签?
优惠活动
大模型
产品
解决方案
定价
更多

如何为重复列表元素按首次出现顺序分配对应序数标签?

字符串列表的顺序标签赋值高效实现

核心实现思路

针对这类字符串列表的标签赋值需求,最优的实现方式是单次遍历+字典缓存映射,全程不需要重复遍历比对元素,能最大程度保证处理效率:

  • 用字典记录每一个首次出现的字符串对应的标签值,字典的键查找、插入操作平均是固定时间复杂度,哪怕列表里存的是长文本字符串,也不会产生额外的性能开销
  • 遍历过程中同步维护从1开始的递增标签序号:碰到已经在字典里缓存过的元素,直接取出对应标签追加到结果里;碰到第一次出现的新元素,就把当前的标签值存入映射,再把标签序号加1

可直接复用的参考代码

def assign_sequential_tags(input_list):
    tag_mapping = {}
    next_tag = 1
    result = []
    for item in input_list:
        if item not in tag_mapping:
            tag_mapping[item] = next_tag
            next_tag += 1
        result.append(tag_mapping[item])
    return result

实际效果验证

用题目给出的示例输入测试:

input_sample = ['hi you', 'hello', 'hi you', 'hello', 'good bye']
print(assign_sequential_tags(input_sample))
# 运行输出:[1, 2, 1, 2, 3]

性能避坑提示

不要图省事用普通列表存已经出现过的元素,每次靠遍历列表查找当前元素是否存在的写法,整体时间复杂度是平方级的。当输入列表长度达到万级以上时,会出现非常明显的运行延迟;而上面的字典缓存方案是线性时间复杂度,哪怕处理几十万条的长字符串列表也能保持很高的运行速度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 18:57:03