Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Introdução: Dicionários

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui



Acho que um dos tipos de dados mais bem bolados em Python é o dicionário. Ele permite que sejam feitas diversas coisas com eles. Eu particularmente utilizo ele como um catálogo de informações ou como um "banco de dados" simplificado.

Dicionários



Dicionários são uma coleção de entradas identificados por uma chave e um valor. A chave, ou índice, pode ser qualquer tipo imutável em python enquanto o valor pode ser absolutamente qualquer coisa em Python.



Sintaxe

A sintaxe do dicionário utiliza o símbolo chaves como delimitador de início e fim, o dois pontos ( : ) separa o índice do valor e a vírgula separa os pares índice:valor :
Código :
>>> {'Nome':'Magnun', 'Bebida':'Cha Verde', 'Linguagem':'Python'}
{'Bebida': 'Cha Verde', 'Linguagem': 'Python', 'Nome': 'Magnun'}
>>>
Nesse exemplo eu criei um catálogo de informações sobre minha pessoa. Esse catálogo é constituído pelas chaves "Nome", "Bebida" e "Linguagem" e pelos valores "Magnun", "Cha verde" e "Python", respectivamente. Note que a ordem dos índices foi alterada de forma e estar em ordem alfabética.



Exemplos de índices e valores válidos

Como eu disse anteriormente você não necessariamente tem que usar strings como índices do dicionário:
Código :
>>> {1:'Ubuntu', 2:'Debian', 3:'Fedora'}
{1: 'Ubuntu', 2: 'Debian', 3: 'Fedora'}
>>>
É importante lembrar também que os valores podem variar de tipos como no exemplo abaixo:
Código :
>>> {'Nome': 'Magnun', 'Hobbie': ('Tocar Contra-baixo', 'Programar em Python', 'Desenhar Manga'), 'Idade': 24, 'Altura': 1.80}
{'Idade': 24, 'Hobbie': ('Tocar Contra-baixo', 'Programar em Python', 'Desenhar Manga'), 'Altura': 1.8, 'Nome': 'Magnun'}
>>>
Como vocês podem ver, utilizei valores do tipo string, tupla, número inteiro e número com ponto flutuante.



Índices não recomendados

Além disso, é possível utilizar índices heterogêneos, como no caso abaixo:
Código :
>>> {'teste':'ok', 1:'ok tambem', (1,2):'ainda ok'}
{(1, 2): 'ainda ok', 1: 'ok tambem', 'teste': 'ok'}
>>>
Atenção: Utilizar indices como no caso a cima pode gerar grandes problemas na hora de programar. É importante manter um padrão!



Índices não aceitos

Como eu mencionei, só é possível utilizar tipos imutáveis nos índices, logo não é possível utilizar listas e dicionários:
Código :
>>> {[1,2]:'teste', 'resposta':42}
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>
Outro detalhe é que os índices devem ser unicos, caso seja utilizado o mesmo índice mais de uma vez na inicialização de um dicionário, a última atribuição irá prevalecer:
Código :
>>> {'teste1':1, 'teste2':2, 'teste1':3}
{'teste1': 3, 'teste2': 2}
>>>
Um pequeno banco de dados

Como eu disse, é possível utilizar os dicionários para organizar um banco de dados simplificado. Para isso vou utilizar um dicionário que tem como índices números inteiros - eles representarão a chave primária da tabela - e como valores teremos dicionários que indexarão informações sobre a entrada. Para uma maior legibilidade do código, vou separar cada entrada em uma nova linha:

Código :
>>> {
... 0:{'Nome':'Marcus Marciel',
...    'Tags':['Administrador', 'Especialista'],
...    'Data de Registro':'07/12/2000',
...    'Total de Mensagens':1370,
...    'Envios no Blog':44},
... 1:{'Nome':'Magnun',
...    'Tags':['Moderador', 'Daemon'],
...    'Data de Registro':'12/02/2006',
...    'Total de Mensagens':4676,
...    'Envios no Blog':16},
... 2:{'Nome':'Alexandre Correa',
...    'Tags':['Editor', 'Moderador', 'Consultor'],
...    'Data de Registro':'13/11/2006',
...    'Total de Mensagens':945,
...    'Envios no Blog':113},
... } # Fim do dicionário
{0: {'Data de Registro': '07/12/2000', 'Envios no Blog': 44, 'Tags': ['Administr
ador', 'Especialista'], 'Total de Mensagens': 1370, 'Nome': 'Marcus Marciel'}, 1
: {'Data de Registro': '12/02/2006', 'Envios no Blog': 16, 'Tags': ['Moderador',
 'Daemon'], 'Total de Mensagens': 4676, 'Nome': 'Magnun'}, 2: {'Data de Registro
': '13/11/2006', 'Envios no Blog': 113, 'Tags': ['Editor', 'Moderador', 'Consult
or'], 'Total de Mensagens': 945, 'Nome': 'Alexandre Correa'}}
>>>
Outras formas de se iniciar um dicionário

Existe outra forma de se iniciar um dicionário:
Código :
>>> dict((('teste1',1), ('teste2',2)))  # Tupla de tuplas
{'teste1': 1, 'teste2': 2}
>>> dict([('teste1',1), ('teste2',2)])  # Lista de tuplas
{'teste1': 1, 'teste2': 2}
>>> dict([['teste1',1], ['teste2',2]])  # Lista de listas
{'teste1': 1, 'teste2': 2}
>>> dict(teste=1, teste2=2)  # Argumentos
{'teste': 1, 'teste2': 2}
>>>
Eu, pessoalmente, acho a forma tradicional (usando chaves) bem clara e concisa mas não posso negar que a forma de inicialização utilizando argumentos (última linha do exemplo acima) tem suas aplicações. Mas todas as outras demonstradas acima, eu considero muito confusa e desnecessárias.


É isso ai pessoal. No próximo post vamos começar a falar da função de slicing (fatiamento). Espero posta em breve.

Até mais...

Atualizado 01-09-2010 em 09:07 por Magnun

Categorias
internet , Python , Artigos , Artigos , Cursos , Curso de Python

Comentários

Página 2 de 2 PrimeiroPrimeiro 12
  1. Avatar de fabraga
    Ainda desenha Manga? :)
Página 2 de 2 PrimeiroPrimeiro 12

+ Enviar Comentário