Estender dicionário Python

Neema Muganga 30 janeiro 2023
  1. Usando o método update() para estender um dicionário em Python
  2. Usando o ** Operador para estender um dicionário Python
  3. Usando a compreensão de dicionário para estender um dicionário Python
  4. Usando collections.Chainmap para estender um dicionário Python
Estender dicionário Python

Este artigo mostrará ao usuário como estender um dicionário Python com outro dicionário. Um dicionário é um contêiner de dados que pode ser alterado (é mutável) e armazena esses dados na forma de pares chave-valor, exemplo {chave: 'valor'}.

Você pode estender um dicionário com outro elemento por concatenação. Isso significa que todos os pares de valores-chave em um dicionário serão adicionados ao outro.

Usando o método update() para estender um dicionário em Python

O método update() é uma das maneiras que o Python usa para implementar a concatenação de dicionário. Isso é feito adicionando elementos do par de valores-chave de outro dicionário ao final do dicionário atual.

Este método é especialmente útil ao estender um dicionário que possui pares de valores-chave diferentes de outro dicionário. Caso contrário, usar update() substituirá os valores existentes no primeiro dicionário com os elementos no segundo dicionário.

Em termos mais simples, os valores no segundo dicionário definido substituem os do primeiro devido à sobreposição.

first_dict = {"name": "Yolanda", "major": "Bsc Comp Science", "age": 23}
second_dict = {"name": "Beatrice", "major": "Bsc Comp Science", "age": 43}
first_dict.update(second_dict)
print(first_dict)

Resultado:

{'name': 'Beatrice', 'major': 'Bsc Comp Science', 'age': 43}

Os dicionários acima têm valores chave idênticos, que são name. Usar update() para concatenar esses armazenamentos de dados resulta no valor da chave name para o first_dict a ser substituído pelo de second_dict. Portanto, isso resulta em um único dicionário conforme exibido na saída.

No entanto, ao estender um dicionário com valores que ainda não foram definidos, update() exibe um único dicionário com todos pares de valores-chave de ambos os dicionários definidos.

Exemplo:

dict_one = {'u':2, 'v':4, 'w':7}
dict_two = {'x':5, 'y':6, 'z': 8}
dict_one.update(dict_two)
print(dict_one)

Resultado:

{'u': 2, 'v': 4, 'w': 7, 'x': 5, 'y': 6, 'z': 8}

Usando o ** Operador para estender um dicionário Python

Usar o operador asterik em uma instrução de uma linha ficaria assim:

dict(iterable, **kwargs)

iterable é o primeiro dicionário definido, e o segundo parâmetro é o segundo dicionário (parâmetro de palavra-chave).

Exemplo

y = {"a": 5, "b": 6}
z = {"c": 7, "d": 9}

x = dict(y, **z)
print(x)

Resultado:

{'a': 5, 'b': 6, 'c': 7, 'd': 9}

Se houver uma sobreposição de par de valores-chave nos dicionários definidos, os itens do segundo dicionário se sobrepõem aos do primeiro dicionário da mesma forma que vimos em update().

Exemplo:

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

Resultado:

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

Também é importante notar que os nomes dos argumentos e as chaves nos itens **dictionary devem ser do tipo de dados string. Caso contrário, uma exceção Typerror será exibida.

Exemplo:

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, 7: 7}
dictt = dict(first_dict, **second_dict)
print(dictt)

Resultado:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: keywords must be strings

Usando a compreensão de dicionário para estender um dicionário Python

Este método de transformação transforma um dicionário Python em outro, incluindo condicionalmente itens de um dicionário original em um novo. Funciona de forma semelhante ao uso de asteriscos como acima.

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
the_dictionary = {**first_dict, **second_dict}
print(the_dictionary)

Resultado:

{'a': 2, 'b': 3, 'c': 4, 'e': 6, 'f': 7}

Usando collections.Chainmap para estender um dicionário Python

Python fornece a classe ChainMap que agrupa dicionários serval para formar uma única visualização que pode ser atualizada quando necessário. Nós o importamos do módulo collections em Python.

Use este método para encadeamento mais rápido de elementos. Isso ocorre porque o chainmap usa apenas as visualizações dos dicionários; portanto, não envolve a cópia de dados.

Além disso, ele sobrescreve as chaves a qualquer momento; portanto, pode-se dizer pela saída qual é a fonte de dados.

Implemente-o assim:

from collections import ChainMap

first_dict = {"a": 2, "b": 3, "c": 5}
second_dict = {"c": 4, "e": 6, "f": 7}
a_dictionary = ChainMap(first_dict, second_dict)