Dicionários
Os dicionários em Python são coleções não ordenadas de valores. Os valores são acedidos não através de um indice mas através de uma chave.
Os elementos num dicionário estão organizados não como elementos isolados mas num par chave:valor.
Cada chave de um dicionário está, portanto, associada a um valor. As chaves têm de ser únicas mas não os valores que podem ser repetidos, embora associados a chaves diferentes.
O tipo de dados de uma chave deve ser imutável, podendo ser: strings, numeros ou tuples.
Um dicionário pode ter chaves de vários tipos:
dic = {'Nome':'Luis', 3:[17, 18, 19]}
Criação de um dicionário
Um dicionário é criado definindo os seus elementos em pares chave:valor, separados por vírgulas e envoltos em chavetas.
# Exemplo de um dicionário:
dic = {1:"Luisa", 2:"Ana", 3:"Rita"}
# Outro exemplo de um dicionário:
dic2 = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
Um dicionário vazio é declarado, definindo um par de chavetas vazias.
# Exemplo de um dicionário vazio:
dic = {}
Criação de um dicionário com a função dict()
A função dict() cria um dicionário a partir de :
- argumentos keyword
- argumentos iterable
- argumentos mapping
argumentos keyword
Um argumento keyword é um argumento do tipo nome=valor. Se passarmos um conjunto de argumentos keyword, separados por vírgulas, para a função dict(), a função constrói um dicionário em que o nome dos argumentos é a chave e o valor, o valor correspondente.
dic = dict( nome='pedro', apelido='silva' )
print( dic )
Output: {'nome': 'pedro', 'apelido': 'silva'}
argumentos iterable
Um argumento iterable pode ser uma lista, tuple ou string. Neste caso, cada item do argumento iterable, tem de ser também um objeto iterable com exatamente dois objetos: o primeiro objeto será a chave e o segundo, o valor correspondente.
# lista é um objeto iterable composta por objetos iterable do tipo tuple
dic = dict([('largura', 15), ('altura', 10)])
print(dic)
Output: {‘largura’: 15, ‘altura’: 10}
argumentos mapping
Um argumento mapping é um agrumento com um objeto cujos elementos são do tipo chave=valor, por exemplo um dicionário.
#o argumento é um dicionário, ou seja, um objeto mapping
dic = dict({'largura': 15, 'altura': 10})
print(dic)
Output: {'largura': 15, 'altura': 10}
Tamanho de um dicionário
Para obtermos o tamanho de um dicionário, usamos a função len():
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
print(len(dic))
Output: 3
Acesso aos valores de um dicionário
Acedemos a um valor num dicionário através da sua chave. Para isso, basta colocar a chave entre parenteses reto e obtemos o valor correspondente.
#Aceder aos valores de um dicionário
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
print( dic["17-22-XA"] ) #acedemos ao valor com a chave "17-22-XA" (Opel Corsa)
print( dic["21-MA-56"] ) #acedemos ao valor com a chave "21-MA-56" (Ford Fiesta)
print( dic["AA-13-32"] ) #acedemos ao valor com a chave "AA-13-32" (Renault Clio)
Acesso a uma chave inexistente
Ao tentarmos aceder a um valor com uma chave inexistente, isso produz um erro:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
print( dic["01-01-BB"] ) # a chave "01-01-BB" não existe
Output:
Traceback (most recent call last):
File "cars.py", line 3, in
print( dic["01-01-BB"] )
KeyError: '01-01-BB'
Verificar se uma chave existe
Podemos verificar se uma chave existe com o operador in:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
if "21-MA-56" in dic:
print("Existe")
else:
print("Não existe")
Output: "Existe"
Verificar se uma existe chave usando o método keys():
O método keys() retorna uma lista de todas as chaves disponíveis no dicionário. Podemos usar o operador in com a lista retornada pelo método keys():
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
if "21-MA-56" in dic.keys():
print("Existe")
else:
print("Não existe")
Output: "Existe"
Adição de um elemento ao dicionário
Para adicionar um novo elemento a um dicionário basta definir a nova chave desse elemento, entre parenteses retos, e atribuir-lhe um valor:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
print(dic)
dic["74-XF-34"] = "Fiat Uno" #adicionamos um novo elemento com a chave "74-XF-34"
print(dic)
Output:
{'17-22-XA': 'Opel Corsa', 'AA-13-32': 'Renault Clio', '21-MA-56': 'Ford Fiesta'}
{'17-22-XA': 'Opel Corsa', '74-XF-34': 'Fiat Uno', 'AA-13-32': 'Renault Clio', '21-MA-56': 'Ford Fiesta'}
Alteração do valor de um elemento
Para alterar o valor de um elemento do dicionário, basta acedê-lo através a da chave e atribuir-lhe um novo valor:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
dic["21-MA-56"] = "Fiat Uno" # alteração do valor com a chave "21-MA-56"
print( dic["21-MA-56"] )
Output: Fiat Uno
Eliminação de um elemento
Para eliminar um elemento de um dicionário, usamos a função del() e passamos para essa função o elemento a eliminar, através da sua chave:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
print(dic)
del( dic["21-MA-56"] ) # eliminamos o elemento com a chave "21-MA-56"
print(dic)
Output:
{'21-MA-56': 'Ford Fiesta', 'AA-13-32': 'Renault Clio', '17-22-XA': 'Opel Corsa'}
{'AA-13-32': 'Renault Clio', '17-22-XA': 'Opel Corsa'}
Eliminação de todos os elementos de um dicionário
Para eliminarmos todos os elementos de um dicionário usamos o método clear():
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
dic.clear()
print(dic)
Output: {}
Eliminação do dicionário
Para eliminarmos o dicionário usamos a instrução del:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
del dic # eliminamos todo o dicionário
Percorrer um dicionário
Iterar as chaves de um dicionário
O método keys() retorna uma lista com as chaves do dicionário. Podemos, portanto, iterá-la:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
for k in dic.keys():
print(k)
Output:
17-22-XA
AA-13-32
21-MA-56
Iterar os valores de um dicionário
O método values() retorna uma lista com os valores do dicionário. Podemos, igualmente, iterá-la:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
for v in dic.values():
print(v)
Output:
Opel Corsa
Renault Clio
Ford Fiesta
iterar os elementos de um dicionário
O método items() retorna uma lista de tuples com o par (chave, valor). Podemos também iterá-la:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
for k, v in dic.items():
print(k, v)
Output:
17-22-XA Opel Corsa
AA-13-32 Renault Clio
21-MA-56 Ford Fiesta
Métodos de dicionários
clear()
Remove todos os elementos do dicionário. O dicionário fica vazio:
dic = {"17-22-XA":"Opel Corsa", "21-MA-56":"Ford Fiesta", "AA-13-32":"Renault Clio"}
dic.clear()
copy()
Produz uma cópia do dicionário:
dic = {1: "Carlos", 2: "Ana", 3: "Rita", 4: "Pedro"}
dic2 = dic.copy()
print(dic2)
Output:
{1: 'Carlos', 2: 'Ana', 3: 'Rita', 4: 'Pedro'}
fromkeys()
O método fromkeys() retorna um dicionário com um conjunto especificado de chaves. Também pode inicializar as entradas com um valor especificado:
chaves = ('A', 'B', 'C', 'D')
valor = 0
d = dict.fromkeys(chaves, valor)
print(d)
Output:
{'A': 0, 'B': 0, 'C': 0, 'D': 0}
get()
O método get() devolve o valor de uma chave ou None se a chave não existir:
dic = {1: "Carlos", 2: "Ana", 3: "Rita", 4: "Pedro"}
nome = dic.get(2)
print(nome)
Output: Ana
items()
O método items() devolve uma lista de tuples com os pares (chave, valor):
dic = {1: "Carlos", 2: "Ana", 3: "Rita", 4: "Pedro"}
items = dic.items()
print(items)
Output: [(1, 'Carlos'), (2, 'Ana'), (3, 'Rita'), (4, 'Pedro')]
keys()
O método keys() devolve uma lista das chaves do dicionário:
dic = {1: "Carlos", 2: "Ana", 3: "Rita", 4: "Pedro"}
keys = dic.keys()
print(keys)
Output: [1, 2, 3, 4]
update()
O método update() atualiza o dicionário com os elementos de outro dicionário ou de um iterável de pares chave/valor:
dic = {1: "Carlos", 2: "Ana", 3: "Rita", 4: "Pedro"}
dic2 = {6: "Manel"}
dic.update(dic2)
print(dic)
Output: {1: 'Carlos', 2: 'Ana', 3: 'Rita', 4: 'Pedro', 6: 'Manel'}
values()
O método values() retorna uma lista com os valores do dicionário:
dic = {1: "Carlos", 2: "Ana", 3: "Rita", 4: "Pedro"}
valores = dic.values()
print(valores)
Output: ['Carlos', 'Ana', 'Rita', 'Pedro']
