如何从列表中创建具有重复项的唯一列表

时间:2016-01-31 21:28:54

标签: python list duplicates unique

我知道如何使用set()或两个列表从列表中删除重复项,但是如何维护相同的列表并在末尾添加一个数字用于重复?我可以使用if,但它不是pythonic。谢谢你们!

nome_a = ['Anthony','Rudolph', 'Chuck', 'Chuck', 'Chuck', 'Rudolph', 'Bob']
nomes = []

for item in nome_a:  
    if item in nomes:

        if (str(item) + ' 5') in nomes:
            novoitem = str(item) + ' 6'
            nomes.append(novoitem)

        if (str(item) + ' 4') in nomes:
            novoitem = str(item) + ' 5'
            nomes.append(novoitem)

        if (str(item) + ' 3') in nomes:
            novoitem = str(item) + ' 4'
            nomes.append(novoitem)

        if (str(item) + ' 2') in nomes:
            novoitem = str(item) + ' 3'
            nomes.append(novoitem)

        else:
            novoitem = str(item) + ' 2'
            nomes.append(novoitem)

    if item not in nomes:
        nomes.append(item)

print(nomes)

编辑(1):抱歉。我编辑了澄清。

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

names = ['Anthony','Rudolph', 'Chuck', 'Chuck', 'Chuck', 'Rudolph', 'Bob']

answer = []
name_dict = {}

for name in names:
    if name_dict.get(name):
        name_dict[name] += 1
        answer.append('{}_{}'.format(name, name_dict[name]))
    else:
        name_dict[name] = 1
        answer.append(name)

print(answer)

<强>输出

['Anthony', 'Rudolph', 'Chuck', 'Chuck_2', 'Chuck_3', 'Rudolph_2', 'Bob']