No entanto, uma chave de um dicionário Python deve ser hashable. Um objeto hashable significa que o objeto é imutável e pode produzir um valor de hash único.
Portanto, usar um objeto não lavável como a chave de um dicionário resultará em um erro.
Vamos discutir como podemos resolver este erro.
Erro de exemplo
Considere o código abaixo que ilustra como esse tipo de erro ocorre.
Desenvolvedores = "Games": 200, "Database": 100, "Full_stack": 500No exemplo acima, começamos definindo um dicionário que detém o tipo de desenvolvedor e o número total.
Criamos um dicionário de funcionários que toma o dicionário do desenvolvedor como a chave na segunda parte.
Como um dicionário é ilegal, Python não pode usá -lo como a chave de um dicionário.
Python verifique se o objeto é hashable
A pergunta vem, como sei se um objeto é hashable ou não? Em Python, você pode usar a função de hash para determinar se um objeto é hashable.
Um exemplo é como mostrado:
>>> Hash ("chave")Se um objeto for hashable, ele deve retornar um hash único, como mostrado no exemplo acima. Como uma string é hashable, ela retorna um hash único.
Se você tentar a mesma operação em um dicionário ou uma lista, receberá um erro como mostrado:
>>> Hash ([1,2,3,4,5])Não é hashable, pois uma lista é mutável, como mostrado no erro acima.
Correção: TypeError: Indodível Tipo: 'Dict'
Se você deseja usar um dicionário como uma chave para outro dicionário, você pode fazer isso primeiro convertendo -o em uma tupla.
Uma tupla é hashable, como mostrado no exemplo abaixo:
>>> Hash ((1,2,3,4,5))Vamos resolver nosso primeiro erro convertendo o dicionário do desenvolvedor em uma tupla:
>>> desenvolvedores = tupla (desenvolvedores)Depois de convertê -lo em uma tupla, podemos usá -la como uma chave no dicionário, como mostrado:
>>> funcionários = desenvolvedores: 800Correção 2
Outra solução é usar o dicionário como um valor. Por exemplo, podemos usar o dicionário do desenvolvedor como um valor para o dicionário dos funcionários.
Pegue a ilustração de código abaixo:
>>> desenvolvedores = "jogos": 200, "banco de dados": 100, "Full_stack": 500Nesse caso, o código não retorna um erro, pois estamos usando o dicionário como valor para um novo dicionário.
Usando um loop
Outro método não convencional é usar um loop para. Você pode iterar sobre cada chave e um par de valor de um dicionário e adicioná -los a um novo dicionário.
Considere o exemplo abaixo:
>>> desenvolvedores = "jogos": 200, "banco de dados": 100, "Full_stack": 500Nesse caso, usamos um loop for para iterar sobre os itens de dicionário dos desenvolvedores e anexá -los ao ditado dos funcionários.
Fechamento
Este artigo explorou três métodos de fixação do Erro "TypeError: Incordível:" Dict "" no Python.