python List Duplicates识别并分配值

时间:2016-09-26 03:18:40

标签: list python-3.x duplicates

我有一个像L = [A,B,B,C,C,C]的列表 我需要结果列表为L = [A,B-1,B-2,C-1,C-2,C-3] 即所有重复项都需要有一个运行数字,同时保持顺序相同

1 个答案:

答案 0 :(得分:1)

您可以使用itertools.groupby查找元素的“运行”并从中构建新列表:

import itertools

L = [A,B,B,C,C,C]
answer = []
for _k, group in itertools.groupby(L):
    group = list(group)
    if len(group) == 1:
        answer.extend(group)
        continue
    answer.extend(("{}-{}".format(e,i) for i,e in enumerate(group, 1)))