Neste tutorial, você aprenderá tudo sobre os dicionários Python; como eles são criados, acessando, adicionando, removendo elementos deles e vários métodos embutidos.
Vídeo: dicionários Python para armazenar pares de chave / valor
O dicionário Python é uma coleção não ordenada de itens. Cada item de um dicionário possui um key/value
par.
Os dicionários são otimizados para recuperar valores quando a chave é conhecida.
Criação de dicionário Python
Criar um dicionário é tão simples quanto colocar os itens entre chaves ()
separados por vírgulas.
Um item possui um key
e um correspondente value
que é expresso como um par ( chave: valor ).
Embora os valores possam ser de qualquer tipo de dados e possam ser repetidos, as chaves devem ser do tipo imutável (string, número ou tupla com elementos imutáveis) e devem ser exclusivas.
# empty dictionary my_dict = () # dictionary with integer keys my_dict = (1: 'apple', 2: 'ball') # dictionary with mixed keys my_dict = ('name': 'John', 1: (2, 4, 3)) # using dict() my_dict = dict((1:'apple', 2:'ball')) # from sequence having each item as a pair my_dict = dict(((1,'apple'), (2,'ball')))
Como você pode ver acima, também podemos criar um dicionário usando a dict()
função integrada.
Acessando Elementos do Dicionário
Enquanto a indexação é usada com outros tipos de dados para acessar valores, um dicionário usa keys
. As chaves podem ser usadas dentro de colchetes ()
ou com o get()
método.
Se usarmos colchetes ()
, KeyError
é elevado caso uma chave não seja encontrada no dicionário. Por outro lado, o get()
método retorna None
se a chave não for encontrada.
# get vs () for retrieving elements my_dict = ('name': 'Jack', 'age': 26) # Output: Jack print(my_dict('name')) # Output: 26 print(my_dict.get('age')) # Trying to access keys which doesn't exist throws error # Output None print(my_dict.get('address')) # KeyError print(my_dict('address'))
Resultado
Jack 26 Nenhum Traceback (última chamada mais recente): Arquivo "", linha 15, impresso (my_dict ('address')) KeyError: 'address'
Alterar e adicionar elementos de dicionário
Os dicionários são mutáveis. Podemos adicionar novos itens ou alterar o valor de itens existentes usando um operador de atribuição.
Se a chave já estiver presente, o valor existente será atualizado. Caso a chave não esteja presente, um novo par ( chave: valor ) é adicionado ao dicionário.
# Changing and adding Dictionary Elements my_dict = ('name': 'Jack', 'age': 26) # update value my_dict('age') = 27 #Output: ('age': 27, 'name': 'Jack') print(my_dict) # add item my_dict('address') = 'Downtown' # Output: ('address': 'Downtown', 'age': 27, 'name': 'Jack') print(my_dict)
Resultado
('nome': 'Jack', 'idade': 27) ('nome': 'Jack', 'idade': 27, 'endereço': 'Centro')
Removendo elementos do dicionário
Podemos remover um item específico de um dicionário usando o pop()
método. Este método remove um item com o fornecido key
e retorna o value
.
O popitem()
método pode ser usado para remover e retornar um (key, value)
par de itens arbitrários do dicionário. Todos os itens podem ser removidos de uma vez, usando o clear()
método.
Também podemos usar a del
palavra-chave para remover itens individuais ou o próprio dicionário inteiro.
# Removing elements from a dictionary # create a dictionary squares = (1: 1, 2: 4, 3: 9, 4: 16, 5: 25) # remove a particular item, returns its value # Output: 16 print(squares.pop(4)) # Output: (1: 1, 2: 4, 3: 9, 5: 25) print(squares) # remove an arbitrary item, return (key,value) # Output: (5, 25) print(squares.popitem()) # Output: (1: 1, 2: 4, 3: 9) print(squares) # remove all items squares.clear() # Output: () print(squares) # delete the dictionary itself del squares # Throws Error print(squares)
Resultado
16 (1: 1, 2: 4, 3: 9, 5: 25) (5, 25) (1: 1, 2: 4, 3: 9) () Traceback (última chamada mais recente): Arquivo "", linha 30, na impressão (quadrados) NameError: nome 'quadrados' não está definido
Métodos de dicionário Python
Os métodos disponíveis com um dicionário estão tabulados a seguir. Alguns deles já foram usados nos exemplos acima.
Método | Descrição |
---|---|
Claro() | Remove todos os itens do dicionário. |
cópia de() | Retorna uma cópia superficial do dicionário. |
fromkeys (seq (, v)) | Retorna um novo dicionário com chaves de seq e valor igual av (o padrão é None ). |
obter (chave (, d)) | Retorna o valor da chave. Se a chave não existir, retorna d (o padrão é None ). |
Itens() | Retorna um novo objeto dos itens do dicionário no formato (chave, valor). |
chaves() | Retorna um novo objeto das chaves do dicionário. |
pop (chave (, d)) | Remove o item com a chave e retorna seu valor ou d se a chave não for encontrada. Se d não for fornecido e a chave não for encontrada, ele será gerado KeyError . |
popitem () | Remove e retorna um item arbitrário ( chave, valor ). Gera KeyError se o dicionário estiver vazio. |
setdefault (chave (, d)) | Retorna o valor correspondente se a chave estiver no dicionário. Caso contrário, insere a chave com um valor de d e retorna d (o padrão é None ). |
atualização ((outro)) | Atualiza o dicionário com os pares de chave / valor de outro, sobrescrevendo as chaves existentes. |
valores () | Retorna um novo objeto de valores do dicionário |
Aqui estão alguns exemplos de casos de uso desses métodos.
# Dictionary Methods marks = ().fromkeys(('Math', 'English', 'Science'), 0) # Output: ('English': 0, 'Math': 0, 'Science': 0) print(marks) for item in marks.items(): print(item) # Output: ('English', 'Math', 'Science') print(list(sorted(marks.keys())))
Resultado
('Matemática': 0, 'Inglês': 0, 'Ciências': 0) ('Matemática', 0) ('Inglês', 0) ('Ciências', 0) ('Inglês', 'Matemática', ' Ciência')
Compreensão do dicionário Python
A compreensão de dicionário é uma maneira elegante e concisa de criar um novo dicionário a partir de um iterável em Python.
A compreensão do dicionário consiste em um par de expressões ( chave: valor ) seguido por uma for
declaração entre chaves ()
.
Aqui está um exemplo para fazer um dicionário com cada item sendo um par de um número e seu quadrado.
# Dictionary Comprehension squares = (x: x*x for x in range(6)) print(squares)
Resultado
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
Este código é equivalente a
squares = () for x in range(6): squares(x) = x*x print(squares)
Resultado
(0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25)
A dictionary comprehension can optionally contain more for or if statements.
An optional if
statement can filter out items to form the new dictionary.
Here are some examples to make a dictionary with only odd items.
# Dictionary Comprehension with if conditional odd_squares = (x: x*x for x in range(11) if x % 2 == 1) print(odd_squares)
Output
(1: 1, 3: 9, 5: 25, 7: 49, 9: 81)
To learn more dictionary comprehensions, visit Python Dictionary Comprehension.
Other Dictionary Operations
Dictionary Membership Test
We can test if a key
is in a dictionary or not using the keyword in
. Notice that the membership test is only for the keys
and not for the values
.
# Membership Test for Dictionary Keys squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: True print(1 in squares) # Output: True print(2 not in squares) # membership tests for key only not value # Output: False print(49 in squares)
Output
True True False
Iterating Through a Dictionary
We can iterate through each key in a dictionary using a for
loop.
# Iterating through a Dictionary squares = (1: 1, 3: 9, 5: 25, 7: 49, 9: 81) for i in squares: print(squares(i))
Output
1 9 25 49 81
Dictionary Built-in Functions
Built-in funções gosto all()
, any()
, len()
, cmp()
, sorted()
, etc, são comumente usados com dicionários para executar diferentes tarefas.
Função | Descrição |
---|---|
todos() | Retorne True se todas as chaves do dicionário forem True (ou se o dicionário estiver vazio). |
qualquer() | Retorne True se alguma chave do dicionário for verdadeira. Se o dicionário estiver vazio, retorne False . |
len () | Retorna o comprimento (o número de itens) no dicionário. |
cmp () | Compara itens de dois dicionários. (Não disponível em Python 3) |
classificado () | Retorna uma nova lista classificada de chaves no dicionário. |
Aqui estão alguns exemplos que usam funções integradas para trabalhar com um dicionário.
# Dictionary Built-in Functions squares = (0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81) # Output: False print(all(squares)) # Output: True print(any(squares)) # Output: 6 print(len(squares)) # Output: (0, 1, 3, 5, 7, 9) print(sorted(squares))
Resultado
Falso Verdadeiro 6 (0, 1, 3, 5, 7, 9)