Python - Dicionário

No Dicionário, cada chave é separada de seu valor por dois pontos (:), os itens são separados por vírgulas e tudo está entre chaves. Um dicionário vazio sem nenhum item é escrito com apenas duas chaves, assim: {}.

As chaves são exclusivas em um dicionário, enquanto os valores podem não ser. Os valores de um dicionário podem ser de qualquer tipo, mas as chaves devem ser de um tipo de dados imutável, como strings, números ou tuplas.

Acessando Valores no Dicionário

Para acessar os elementos do dicionário, você pode usar os familiares colchetes junto com a chave para obter seu valor. A seguir está um exemplo simples -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Name']: ", dict['Name']
print "dict['Age']: ", dict['Age']

Quando o código acima é executado, ele produz o seguinte resultado -

dict['Name']:  Zara
dict['Age']:  7

Se tentarmos acessar um item de dados com uma chave, que não faz parte do dicionário, obteremos um erro da seguinte forma -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print "dict['Alice']: ", dict['Alice']

Quando o código acima é executado, ele produz o seguinte resultado -

dict['Alice']:
Traceback (most recent call last):
   File "test.py", line 4, in <module>
      print "dict['Alice']: ", dict['Alice'];
KeyError: 'Alice'

Atualizando Dicionário

Você pode atualizar um dicionário adicionando uma nova entrada ou um par de valores-chave, modificando uma entrada existente ou excluindo uma entrada existente, conforme mostrado abaixo no exemplo simples -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8; # update existing entry
dict['School'] = "DPS School"; # Add new entry

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Quando o código acima é executado, ele produz o seguinte resultado -

dict['Age']:  8
dict['School']:  DPS School

Excluir Elementos do Dicionário

Você pode remover elementos individuais do dicionário ou limpar todo o conteúdo de um dicionário. Você também pode excluir o dicionário inteiro em uma única operação.

Para remover explicitamente um dicionário inteiro, basta usar o deldeclaração. A seguir está um exemplo simples -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name']; # remove entry with key 'Name'
dict.clear();     # remove all entries in dict
del dict ;        # delete entire dictionary

print "dict['Age']: ", dict['Age']
print "dict['School']: ", dict['School']

Isso produz o seguinte resultado. Observe que uma exceção é levantada porque apósdel dict dicionário não existe mais -

dict['Age']:
Traceback (most recent call last):
   File "test.py", line 8, in <module>
      print "dict['Age']: ", dict['Age'];
TypeError: 'type' object is unsubscriptable

Note - O método del () é discutido na seção subsequente.

Propriedades das chaves do dicionário

Os valores do dicionário não têm restrições. Eles podem ser qualquer objeto Python arbitrário, tanto objetos padrão quanto objetos definidos pelo usuário. No entanto, o mesmo não é verdade para as chaves.

Existem dois pontos importantes a serem lembrados sobre as chaves do dicionário -

(a)Mais de uma entrada por chave não permitida. O que significa que nenhuma chave duplicada é permitida. Quando chaves duplicadas são encontradas durante a atribuição, a última atribuição vence. Por exemplo -

#!/usr/bin/python

dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print "dict['Name']: ", dict['Name']

Quando o código acima é executado, ele produz o seguinte resultado -

dict['Name']:  Manni

(b)As chaves devem ser imutáveis. O que significa que você pode usar strings, números ou tuplas como chaves de dicionário, mas algo como ['chave'] não é permitido. A seguir está um exemplo simples -

#!/usr/bin/python

dict = {['Name']: 'Zara', 'Age': 7}
print "dict['Name']: ", dict['Name']

Quando o código acima é executado, ele produz o seguinte resultado -

Traceback (most recent call last):
   File "test.py", line 3, in <module>
      dict = {['Name']: 'Zara', 'Age': 7};
TypeError: list objects are unhashable