Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python

Simples Recapitulação Sobre Dicionários do Python

by
Difficulty:BeginnerLength:ShortLanguages:
This post is part of a series called A Smooth Refresher To Python.
A Smooth Refresher on Python's Lists
A Smooth Refresher on Python's Tuples

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Num tutorial anterior, falamos sobre um tipo de objeto bastante versátil e flexível em Python, as Listas. Nesse artigo, continuaremos nossa recapitulação com outro tipo de objeto versátil em Python, os Dicionários (ou vetores asociativos ou hashes). Como a Lista, o Dicionário é um conceito importante a aprender para dar continuidade em nossa jornada no Python.

Afinal, O Que É Um Dicionário?

Se entendeu o artigo sobre Listas, será bem fácil entender o conteito dos Dicionários. Eles parecem muito com Listas mas com duas grandes diferenças:

  1. São conjuntos desordendos (Enquanto listas são ordenadas).
  2. Chaves são usadas para acessar os items, não seus índices.

Cada chave no Dicionário possui um valor que pode ser qualquer tipo de objeto do Python. Isso é, Dicionários podem ser considerados pares de chave-valor. Cuidado: chaves não podem ser do tipo Lista ou Dicionário.

Criemos um Dicionário Inglês-Francês

Como vimos na seção anterior, um Dicionário, nada mais é que uma lista desordenada de pares chave-valor. Usemos esse conceito para criar nosso primeiro exemplo, um dicionário Inglês-Francês. Esse Dicionário pode ser criado da seguinte forma:

english_french = {'paper':'papier', 'pen':'stylo', 'car':'voiture', 'table':'table','door':'porte'}

O Dicionário english_french possui cinco palavras em Inglês como chaves, com suas traduções em Fracês como valores.

Digamos que queiramos saber como dizer pen em Frânces. Simplesmente fazemos o seguinte:

english_french['pen']

onde você verá stylo como o valor retornado.

Tornando as Coisas Mais Interessantes

Digamos que tivéssemos um Dicionário french_spanish com as mesmas palavras do Dicionário english_french:

french_spanish = {'papier':'papel', 'stylo':'pluma', 'voiture':'coche', 'table':'mesa', 'porte':'puerta'}

Pois bem, perguntaram a você como dizer door em Espanhol e você não tem um dicionário Inglês-Espanhol em mãos! Mas, não se preocupe, temos a solução. Consulte seu Dicionário english_french para aquela palavra e use o resultado para consultar o Dicionário french_spanish: Entendeu? Vejamos como podemos fazer isso em Python:

french_spanish[english_french['door']]

O resultado deve ser puerta. Não é bem legal? Acabou de descobrir a tradução de door em Espanhol embora não tenha um dicionário Inglês-Espanhol.

Mais Operações sobre Dicionários

No exemplo anterior, vimos como criar um Dicionário e acessar seus itens. Vejamos mais operações que podemos realizar em Dicionários. Usarei o Dicionário english_french nos exemplos abaixo.

Quantas Registros Existem no Dicionário?

Em outras palavras, essa operação deve retornar a quantidade de pares chave-valor no Dicionário. Isso pode ser realizado pelo operador len(), assim:

len(english_french)

Ele deve retornar 5.

Removendo uma Chave

A remoção de um item em um Dicionário se dá através das chaves. Por exemplo, digamos que queremos remover a palavra (chave) door do Dicionário. Isso pode ser feito dessa forma:

del english_french['door']

Isso removerá a chave door junto de seu valor porte.

A Chave Existe no Dicionário?

Na sub-seção anterior, removemos a chave door do Dicionário. Se quiseremos verificar se door ainda existe ou não no Dicionário, digitamos:

'door' in english_french

que deverá retornar False.

Assim, o que você acha que a declaração abaixo retornará? Vá em frente e tente (perceba o not).

'door' not in english_french

O que acontece se tentarmos acessar uma chave que não existe no Dicionário? Digamos english_french['door']. Nesse caso, será retornado um erro similar ao de logo abaixo:

Traceback (most recent call last):

File "dictionary.py", line 7, in <module> ,

print english_french['door']

KeyError: 'door'

Criando uma Cópia do seu Dicionário

Talvez precise copiar seu Dicionário english_french e atribuir a outro Dicionário. Isso pode ser facilmente feito usando a função copy(), assim:

new_english_french = english_french.copy()

Dicionários Aninhados

Como mencionamos acima, valores em Dicionários podem ser qualquer tipo, incluindo Dicionários. Isso é referenciado como Aninhamento. Um exemplo disso seria esse:

student = {'ID':{'name':'Abder-Rahman', 'number':'1234'}}

Logo, se digitar student['ID'], receberá:

{'name': 'Abder-Rahman', 'number': '1234'}

Iterando Sobre um Dicionário

Voltemos ao Dicionário english_french. Há inúmeras maneiras que podemos iterar sobre os itens de um Dicionário:

for word in english_french:

print word

O resultado dessa declaração é a que segue:

car

pen

paper

door

table

As chaves no resultado não aparecem na mesma ordem que no Dicionário english_french. Agora entendemos o porque dos Dicionários serem considerados conjuntos não ordenados.

Outra forma de iterar sobre as chaves seria assim:

for word in english_french.iterkeys():

print word

Note que usamos a função iterkeys(). Uma função similar, que pode ser usadas para iterar sobre os valores, é a itervalues():

for meaning in english_french.itervalues():

print meaning

O resultado neste caso deve parecer com isso:

voiture

stylo

papier

porte

table

Maneiras Alternativas de Criar Dicionários

Há formas alternativas de criar Dicionários em Python usando o construtor dict. Seguem alguns exemplo da criação do mesmo Dicionário ID usando dict:

ID = dict(name = 'Abder-Rahman', number = 1234)

ID = dict([('name','Abder-Rahman'),('number',1234)])

ID = dict(zip(['name','number'],['Abder-Rahman',1234])) # keys and values as Lists

Há muito mais a fazer com Dicionários. Verifique a documentação do Python para mais informações.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.