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

求助:如何在Python中为列表重复元素追加字母实现唯一化

实现重复数字追加字母的Python方案

当然有啦!这个需求在处理标识类数据的时候特别常见,我给你分享两种实用的实现方法,你可以根据场景选择:

方法一:用itertools.groupby处理连续重复元素

如果你的列表里重复元素是连续出现的(就像你给出的示例那样),用groupby分组处理会很高效:

from itertools import groupby

original_list = [101,101,102,103,103,103,104,105,106,107,108,108,108,108]
result = []

# 按连续相同元素分组
for key, group in groupby(original_list):
    items = list(group)
    # 如果组里只有一个元素,直接转字符串加入结果
    if len(items) == 1:
        result.append(str(key))
    # 否则给每个元素按顺序加A、B、C...后缀
    else:
        for idx, _ in enumerate(items):
            suffix = chr(ord('A') + idx)
            result.append(f"{key}{suffix}")

print(result)
# 输出: ['101A', '101B', '102', '103A', '103B', '103C', '104', '105', '106', '107', '108A', '108B', '108C', '108D']

原理说明

  • groupby会把列表中连续的相同元素归为一组,每个组的key就是重复的数字,group是该数字的迭代器。
  • 用chr(ord('A') + idx)生成后缀:idx从0开始,对应A;1对应B,以此类推,完美匹配顺序要求。

方法二:用计数器处理非连续重复元素

如果你的列表里重复元素可能不连续(比如[101,102,101]),可以先统计每个数字的总出现次数,再遍历生成结果:

from collections import Counter

original_list = [101,101,102,103,103,103,104,105,106,107,108,108,108,108]
# 先统计每个数字的总出现次数
total_counts = Counter(original_list)
# 记录每个数字当前遍历到第几次
current_counts = {}
result = []

for num in original_list:
    current_counts[num] = current_counts.get(num, 0) + 1
    # 如果该数字只出现一次,直接转字符串
    if total_counts[num] == 1:
        result.append(str(num))
    # 否则按当前出现顺序加后缀
    else:
        suffix = chr(ord('A') + current_counts[num] - 1)
        result.append(f"{num}{suffix}")

print(result)
# 输出和方法一完全一致

原理说明

  • Counter快速统计每个数字的总出现次数,判断是否需要加后缀。
  • current_counts实时记录当前数字已经遍历到第几次,确保后缀顺序正确,哪怕重复元素不连续也能处理。

这两种方法都能完美实现你想要的效果,选适合自己数据情况的就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:25:17