Programação Python: as diferenças entre listas, tuplas e dicionários…

Há algumas semanas, iniciei um treinamento de programação para a linguagem Python (patrocinado pela instituição de ensino na qual trabalho), pois há tempos, pretendo me aprofundar nesta (e outras) linguagem e atender aos requisitos das SDNs (Software-Defined Networking). E dentre as atividades programadas, uma delas está na elaboração de uma pesquisa, para entender as diferenças entre listas, tuplas e dicionários. Então pensei: porquê não aproveitar a oportunidade e criar uma coluna, baseado no resultado desta pesquisa?

O Python (como toda linguagem de programação) possui as suas particularidades, no que concerne a manipulação de estruturas de dados, seus tipos e formatos. Em destaque, temos as listas, as tuplas e os dicionários. O que estas estruturas possuem em comum? A manipulação de um conjunto de dados (que podem ser inteiros, flutuantes, sequência de caracteres e booleanos) dentro de uma mesma variável. Porém, elas diferem-se quanto a aspectos relacionados a representação, a manipulação, ao uso e a aplicação em geral…

As tanto as listas quanto as tuplas são conjuntos de dados armazenados de forma sequencial, que por sua vez podem ser tanto do mesmo tipo quanto tipos diferentes. Porém, as listas são mutáveis (podendo ser alteradas), ao passo que as tuplas, não. Para declarar uma variável que irá conter uma estrutura de dados baseados no formato de lista, deveremos utilizar colchetes [] e inserir os valores; já para as tuplas, utilizamos parênteses () ao invés de colchetes. Por fim, temos os dicionários, os quais são estruturas de dados baseados em conjuntos de pares chave/valor (no qual cada chave possui um valor respectivo), além destes estarem contidos dentro de chaves {}.

MyList = ['Putz', 10, True, 25.4, 'A']
MyTuple = (1, 'Z', 1.23, 'Psiu', False)
MyDict = {'Name': 'Ednei', 'NickName': 'darkstar', 'Country': 'Brazil'}

Poderemos utilizar métodos nas lista para manipular seus valores, como append, clear, copy, count, extend, insert, join, pop, revert, split e sort, entre outros. Através deles, poderemos realizar operações triviais como adicionar, editar, juntar, ordenar, remover e separar, entre outras não tão comuns. Embora também possamos manipular dicionários (apesar das suas diferenças estruturais), o mesmo não se dá para as tuplas, dada a sua natureza “imutável” (uma vez criadas, não poderão ser modificadas). Também poderemos fazer o uso de funções (como average, len, max, min e sum) e até mesmo aplicar operadores matemáticos, tal como fazemos em planilhas eletrônicas; porém, com diferentes resultados (mesmo para a mesma função), de acordo o tipo de variável.

Por fim, os valores individuais das listas e das tuplas podem ser referenciados por índices numéricos, ao passo que nos dicionários, necessitaremos utilizar as suas chaves para referenciar os repectivos valores. Lembrando que para índices numéricos, a contagem dos valores sempre começa a partir de 0 e não 1, tal como estamos habituados a fazer (uma variável com 10 valores teria os índices de 0, 1, 2, 3… até 9). E caso não saibamos qual é o tipo de estrutura de dados que estamos lidando ou quantos valores elas têm (ou ainda, seja necessário dispor destas definições para lidarmos com elas), podemos utilizar as funções len() e type() para descobrir, bem como “encaixá-las” em rotinas de código…

print(MyList[0])
print(MyTuple[2]
print(MyDict[Name])
type(MyList)
type(MyTuple)
type(MyDict)

Obviamente, as aplicações práticas são inúmeras! Além da utilidade destas estruturas de dados para representar as informações do mundo real, poderemos lançá-las em combinação com estruturas lógicas e operadores, para atender as nossas necessidades. Mas diferente de outras linguagens, o Python proporciona aos desenvolvedores um código mais legível “em termos humanos”, tornando a análise e o diagnóstico de erros mais rápido e prático! Em orquestração e automação (SDN), podemos ver claramente que estas estruturas poderão facilitar muito a formatação e exportação de dados, tal como aqueles adotados padrões e formatos conhecidos, como o YAML e o JSON (especialmente dicionários).

Vou ficando por aqui. Esta jornada tem sido especial para mim, pois me fez lembrar dos meus primeiros tempos em que resolvi ingressar nesta área. Embora não tenha me identificado muito com a profissão de desenvolvedor, ainda assim o aprendizado das técnicas e habilidades de programação, está sendo algo bastante agradável e (até certo ponto) divertido, mesmo sabendo que não irei me tornar um “programador de verdade”! Além do mais, também não preciso me tornar um profissional especializado apenas para criar alguns programas ou scripts, especialmente para atender necessidades específicas em orquestração e automação, tal como é exigido para trabalhar em redes sob a filosofia SDN.

E depois de Python (e Shell Script), ainda vou aprender Ruby… &;-D