Python: como tratar strings usando listas ou dicionários

Veja como lidar com strings repetidamente usando listas e dicionários no Python.
Como Pensar como Programador - Parte 4

Veja como lidar com strings repetidamente usando listas e dicionários no Python.

Este post é complemento do primeiro vídeo da série Como pensar como um programador e resolver problemas. No vídeo — que você pode conferir no final do post — temos uma demanda da empresa Dr. Paçoca: alterar os códigos dos produtos.

A Dr. Paçoca produz paçocas em dois formatos: tabletes e cilindros. As em tabletes possuem código começando com TAB e as em cilindro, com CIL. Os dois formatos recebem quatro dígitos depois das iniciais. Dessa forma, os códigos completos ficam: TAB1234 e CIL9876.

A empresa quer mudar o TAB para T + 00 (dois zeros) e CIL para C + 00 (dois zeros). Usando os exemplos do parágrafo anterior, TAB1234 ficaria T001234.

Criamos esse código (se quiser conferir detalhes, dê uma olhada no vídeo!):

# Projeto 1 - Troca de código
# SET CodOrig
# SET CodNovo = CodOrig.REPLACE(”TAB”, “T00”)
# SET CodNovo = CodNovo.REPLACE(“CIL”, “C00”)
# PRINT(CodNovo)

codOriginal = "TAB1234"
codNovo = codOriginal.replace("TAB", "T00")   # T001234
codNovo = codNovo.replace("CIL", "C00") # Se pegar o original, volta a ser TAB1234! Cuidado
print(codNovo)

Mas queremos agora transformar um conjunto de códigos de uma vez só ao invés de fazermos um a um. Podemos fazer isso de duas formas: usando listas ou dicionários.

Vamos ver primeiro usando listas: o código é praticamente o mesmo. O que muda é que os replaces vão ser executados dentro de um loop para serem repetidos para cada código da lista:

# Projeto 1: Variação com lista

# Pega lista de códigos
listaOriginal = ["TAB1234", "CIL2456", "TAB9385", "TAB9500", "CIL2211"]
# Inicializa nova lista para guardar os novos códigos
listaNova = [] # lista vazia 

# Para cada item da lista
for codOriginal in listaOriginal: 
  # Faz os replaces
  codNovo = codOriginal.replace("TAB", "T00")   # T001234
  codNovo = codNovo.replace("CIL", "C00")       # Se pegar o original, volta a ser TAB1234! Cuidado

  # Insere o código novo na lista nova
  listaNova.append(codNovo)

print(listaNova)

Para um dicionário, também vamos precisar “rodar” com o loop. Mas temos que ver primeiro qual é a estrutura do dicionário: se o código está como chave ou como valor. Neste exemplo, o código está como valor e a chave é uma numeração sequencial (lembre-se de que as chaves do dicionário não podem ser repetidas):

# Projeto 1: Variações para o site
# Variação com dicionário - Códigos como valores

# Pega lista de códigos
dicOriginal = {1 : "TAB1234", 2 : "CIL2456", 3 : "TAB9385", 
               4 : "TAB9500", 5 : "CIL2211"}
# Inicializa novo dicionário para guardar os novos códigos
dicNovo = {} # dicionário vazio

# Para cada item da lista
for chave, codOriginal in dicOriginal.items(): 
  # Faz os replaces
  codNovo = codOriginal.replace("TAB", "T00") 
  codNovo = codNovo.replace("CIL", "C00")

  # Insere o código no novo dicionário, com a mesma chave
  dicNovo[chave] = codNovo
  # Se quiser usar o mesmo dicionário:
  # dicOriginal[chave] = codNovo

print(dicNovo)

Já no exemplo abaixo, os códigos estão como chave. Os valores do dicionário são, neste caso, a descrição de cada produto.

Neste exemplo, não tem jeito: temos que criar um dicionário novo porque o Python vai “reclamar” se mudarmos a chave durante a iteração.

# Projeto 1: Variações para o site
# Variação com dicionário - Códigos como chaves

# Pega dicionário de códigos 
# Valor é a descrição de cada produto
dicOriginal = {"TAB1234" : "Tablete da Turma do Paçoquinha", 
               "CIL2456" : "Cilindro da Pamoninha", 
               "TAB9385" : "Tablete clássico",  "TAB9500" : "Tablete gigante",     
               "CIL2211": "Cilindo clássico"}
dicNovo = {} 

# Para cada item do dicionário
for codOriginal in dicOriginal.keys(): # Não vamos precisar dos valores 
  # Faz os replaces
  codNovo = codOriginal.replace("TAB", "T00") # ATENÇÃO: o código é a chave
  codNovo = codNovo.replace("CIL", "C00")

  # Troca o código no dicionário, com a mesma chave
  # Copia para o novo dicionário e remove o antigo
  dicNovo[codNovo] = dicOriginal[codOriginal]

print(dicNovo)

Projeto original

Você confere o projeto original no vídeo abaixo:

Se somos tão dependentes de tecnologia, por que muitas empresas não se protegem? A Visa Net já investe nisso há muitos anos.
Exercícios para quem está começando e para quem já conhece um pouco dessas funções muito úteis de consolidação de dados.
DevOps une desenvolvimento e operações para melhorar os ciclos de gerenciamento e aumentarem a segurança e disponibilidade da infeaestrutura de TI.... E, na prática, o que é?
Antes de saber o que DevOps ou Método Ágil, é muito bom conhecer como se desenvolve um software ou aplicativo.