Search code examples
pythonlistduplicatesunique

How to create unique list from list with duplicates


I know how to remove duplicates from a list using set() or two lists, but how do I maintain the same list and add a number at the end for duplicates? I could do it using if, but it´s not pythonic. Thanks guys!!

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)

Edit(1): Sorry. I edited for clarification.


Solution

  • You could use the following:

    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)
    

    Output

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