重命名python列表中的重复项

时间:2020-02-24 03:10:25

标签: python-3.x list

我是python的新手,有一个简单的问题。

我有一个列表列表

tempList = [ ['a', 'b', 'c', 'a', 'd', 'b', 'a'], ['a', 'c', 'd', 'c', 'd'] ]

例如,我想用增量数字重命名所有后续重复项:

tempList= [ ['a', 'b', 'c', 'a_1', 'd', 'b_1', 'a_2'], ['a', 'c', 'd', 'c_1', 'd_1']]

我知道如何针对平面列表进行此操作,但是我无法找到列表列表的解决方案。谁能给我一个如何做的指示?我尝试的代码如下,似乎无法正常工作。

for i in range(0, len(tempList)):
    counts = Counter(tempList[i])
    print(Counter(tempList[i]))
    val = 0
    for s,num in counts.items():
        if num > 1:
            counts[s] = val
            val += 1
        else:
            counts[s] = 0
    tempList = [x if counts[x]==0 else x + str(counts[x]) for x in tempList[i]]

1 个答案:

答案 0 :(得分:0)

以下是保留订单的可能解决方案:

def foo(l):
    d = {}
    for i in range(len(l)):
        if l[i] in d:
            d[l[i]] += 1
            l[i] = l[i] + '_' + str(d[l[i]])
        else:
            d[l[i]] = 0
    return l

list_of_lists = [ ['a', 'b', 'c', 'a', 'd', 'b', 'a'], ['a', 'c', 'd', 'c', 'd'] ]
list_of_lists = [foo(x) for x in list_of_lists]