2
respostas

[Dúvida] Adicionar caracteres a uma string duplicada

Boa tarde, Estou iniciando meu aprendizado em python e estou com a seguinte situação:

Exemplo na seguinte lista:

nomes_comp =  ['Fulano A', 'Beltrano B', 'Fulano A']

Como tenho items duplicados na lista, gostaria de verificar os duplicados e se tiver adicionar um caractere especial a um desses itens. Cheguei a seguinte situação. Consigo verificar se tenho duplicados, mas não conseguir achar uma solução para acrescentar um caractere. Tentei utilizar o .replace mas não funcionou.

for nome in nomes_comp: 
  if nomes_comp.count(nome) > 1:
    nomes_comp.replace(nome + '*')
2 respostas

Boa noite, Esse pedaço de código que você trouxe avisa se é duplicado, mas entra no 'if' para todas as vezes que o nome duplicado aparece.

nomes_comp =  ['Fulano A', 'Beltrano B', 'Fulano A']

for nome in nomes_comp: 
  if nomes_comp.count(nome) > 1:
    print(nome)
Fulano A
Fulano A

Eu tenho a impressão que não é exatamente o que você queria. Eu imagino que a lista resultado pretendido é de trocar apenas a partir da segunda aparição do valor. Uma maneira simples de trocar o valor dentro de listas é pelo índice:

nomes_comp[2] += '*'
nomes_comp
['Fulano A', 'Beltrano B', 'Fulano A*']

Neste caso o metodo list.index(valor_buscado) pode ser interessante, pois ele trás a primeira posição que o valor buscado aparece.

nomes_comp.index('Fulano A')
0

O próximo passo eu deixo com você, para não tirar toda a graça do exercício. Abraços

Olá Bruno, agradeço sua resposta!

Acabei utilizando o seguinte:

count_d = dict()

for i, n in enumerate(nomes_comp):
  c = count_d.get(n,0)
  count_d[n] = c + 1
  if c:
    nomes_comp[i] = n + str(c)