Compare the element with the rest of the Python List
I need to create a program where in the given list, if the name is repeated it puts a numbering. For example: names = [maria, joao, maria] result should be result = [maria, joao, maria1]
Another example: names = [eduardo, joao, eduardo, eduardo] result = [eduardo, joao, eduardo1, eduardo2]
I set up a code where it compares with the next name, I do not know how it does to continue the comparison.
Follow my Code:
0
Author: tatiane berrocal, 2019-08-17
3 answers
You can use a Dictionary to save how many times a name has appeared.
names = ['eduardo', 'joao', 'eduardo', 'eduardo', 'joao']
d = {}
for i in range(len(names)):
if names[i] in d:
d[names[i]] += 1
names[i] += str(d[names[i]])
else:
d[names[i]] = 0
0
Author: Leafar, 2019-08-18 00:25:41
With dictionary you can save the names and the number of times you repeat:
def usernamesSystem(u):
cont = 0
aDict = {}
result = []
for i in range(len(u)):
cont = checkKey(aDict, u[i]) # verifica o numero de ocorrencia do nome
if cont == 0:
aDict[u[i]] = 1 # primeira ocorrencia, guarda valor 1 no dictionary
result.append(u[i]) # carrega o array de output com a palavra
else:
aDict.update({u[i]: cont + 1 }) # atualiza as ocorrencias do nome no dictionary
result.append(u[i] + str(cont)) # carrega o array de output com o nome concatenado com o numero de vezes repetido
return result # array de output com o resultado
def checkKey(dict, key):
if key in dict.keys():
return dict[key] # retorna o numero de ocorrencias quando ja existe no dictionary
else:
return 0 # retorna 0 se não existir
0
Author: Ernesto Casanova, 2019-08-18 01:01:08
I now put the most complete answer, with the Class I used.
class Usernames:
@staticmethod
def usernamesSystem(u):
cont = 0
aDict = {}
result = []
for i in range(len(u)):
cont = Usernames.checkKey(aDict, u[i])
if cont == 0:
aDict[u[i]] = 1
result.append(u[i])
else:
aDict.update({u[i]: cont + 1 })
result.append(u[i] + str(cont))
return result
@staticmethod
def checkKey(dict, key):
if key in dict.keys():
return dict[key]
else:
return 0
nomes = ['eduardo', 'joao', 'eduardo', 'eduardo']
print(Usernames.usernamesSystem(nomes))
0
Author: Ernesto Casanova, 2019-08-18 13:05:04