Dicionário Python
Dicionário Python
Neste tutorial, você aprenderá tudo sobre dicionários Python; como eles são criados, acessando, adicionando, removendo elementos deles e vários métodos internos.
Vídeo:Dicionários Python para armazenar pares de chave/valor
Dicionário Python é uma coleção não ordenada de itens. Cada item de um dicionário tem um key/value
par.
Os dicionários são otimizados para recuperar valores quando a chave é conhecida.
Criando dicionário Python
Criar um dicionário é tão simples quanto colocar itens dentro de chaves
{}
separados por vírgulas. Um item tem um
key
e um value
correspondente que é expresso como um par (chave:valor ). Embora os valores possam ser de qualquer tipo de dados e possam se repetir, 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 o
dict()
integrado função. 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 entre colchetes []
ou com o get()
método. Se usarmos os colchetes
[]
, KeyError
é gerado 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'])
Saída
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['address']) KeyError: 'address'
Alterar e adicionar elementos do 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, uma nova (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)
Saída
{'name': 'Jack', 'age': 27} {'name': 'Jack', 'age': 27, 'address': 'Downtown'}
Removendo elementos do Dicionário
Podemos remover um item específico em um dicionário usando o
pop()
método. Este método remove um item com o key
fornecido e retorna o value
. O
popitem()
pode ser usado para remover e retornar um (key, value)
arbitrário par de itens do dicionário. Todos os itens podem ser removidos de uma só vez, usando o clear()
método. Também podemos usar o
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)
Saída
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined
Métodos de dicionário Python
Os métodos disponíveis com um dicionário são tabulados abaixo. Alguns deles já foram usados nos exemplos acima.
Método | Descrição |
---|---|
limpar() | Remove todos os itens do dicionário. |
copiar() | Retorna uma cópia superficial do dicionário. |
fromkeys(seq[, v]) | Retorna um novo dicionário com chaves de seq e valor igual a v (o padrão é None ). |
get(chave[,d]) | Retorna o valor da chave . Se a chave não existe, retorna d (o padrão é None ). |
itens() | Retorne 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 if chave Não foi encontrado. Se d não é fornecido e a chave não for encontrado, ele gera KeyError . |
popitem() | Remove e retorna um item arbitrário (chave, valor ). Aumenta KeyError se o dicionário estiver vazio. |
setdefault(chave[,d]) | Retorna o valor correspondente se a chave está no dicionário. Caso contrário, insere a chave com um valor de d e retorna d (o padrão é None ). |
atualizar([outro]) | Atualiza o dicionário com os pares chave/valor de other , substituindo as chaves existentes. |
valores() | Retorna um novo objeto dos 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())))
Saída
{'Math': 0, 'English': 0, 'Science': 0} ('Math', 0) ('English', 0) ('Science', 0) ['English', 'Math', 'Science']
Compreensão do dicionário Python
A compreensão do 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 um
for
declaração dentro de 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)
Saída
{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)
Saída
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Uma compreensão de dicionário pode opcionalmente conter mais instruções for ou if.
Um
if
opcional pode filtrar itens para formar o novo dicionário. Aqui estão alguns exemplos para fazer um dicionário apenas com itens ímpares.
# Dictionary Comprehension with if conditional
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)
Saída
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
Para aprender mais compreensões de dicionário, visite Compreensão do Dicionário Python.
Outras operações do dicionário
Teste de associação ao dicionário
Podemos testar se um
key
está em um dicionário ou não está usando a palavra-chave in
. Observe que o teste de associação é apenas para o keys
e não para o 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)
Saída
True True False
Iterando por meio de um dicionário
Podemos percorrer cada chave em um dicionário usando um
for
ciclo.
# Iterating through a Dictionary
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
print(squares[i])
Saída
1 9 25 49 81
Funções internas do dicionário
Funções integradas como
all()
, any()
, len()
, cmp()
, sorted()
, etc. são comumente usados com dicionários para realizar diferentes tarefas. Função | Descrição |
---|---|
todos() | Retornar True se todas as chaves do dicionário forem True (ou se o dicionário estiver vazio). |
qualquer() | Retornar True se alguma chave do dicionário for verdadeira. Se o dicionário estiver vazio, retorne False . |
len() | Retorne 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() | Retorne uma nova lista ordenada de chaves no dicionário. |
Aqui estão alguns exemplos que usam funções internas 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))
Saída
False True 6 [0, 1, 3, 5, 7, 9]
python