1
resposta

[Sugestão] Um artifício possibilita formar dicionário com chave de type "list"

# 
# se for necessario formar um dicionario com chave de type "list",
# poderá proceder da seguinte forma: 
#
# - "inventar" um valor distinto para cada lista distinta
# - associar a cada lista o valor correspondente
# - formar o dicionario declarando, em lugar da lista, 
#   o valor correspondente à chave associada 
#

#
# exemplo: 
#
# quer-se formar um dicionário com 2 pares "chave com valor":
#
# chave lista [ 1 , 27 , 3 ] com  valor 'primeiro' 
# chave lista [ 12 , 73 ] com valor 'segundo'
#

#
# a funcao padronizar_literal ( inteiro ) 
# retorna um literal com 5 algarismos 
# que expressa um valor inteiro 
#
# padronizar_literal é chamada por uma função 
# denominada chave_de ( )
#

def padronizar_literal ( inteiro ) :

    limite = 5 

    algarismo = '0'   

    literal = str ( inteiro ) 

    extensao = len ( literal ) 

    if ( extensao >= limite ) :

       return literal        

    if ( extensao < limite ) :       

       for contagem in range ( extensao , limite ) : 

           literal = algarismo + literal 

       return literal 



# o codigo a seguir exemplifica 
# uma associacao entre chave e lista 
# implementada por uma funcao denominada chave_de ()
#

# a funcao chave_de ( lista ) 
# associa uma lista a uma chave 
#
# a entrada da função é uma lista 
#
# uma lista tem poucos elementos 
#
# os elementos de uma lista são inteiros pequenos
#
# a saída da função é um literal 
#

def chave_de ( lista ) :
    concatenacao = ''
    for elemento_de_lista in lista :
        literal = str ( elemento_de_lista ) 
        literal = padronizar_literal ( literal )
        concatenacao = concatenacao + literal 

    return concatenacao

#
# ecoar chave de tres listas diferentes 
# com elementos inteiros parecidos
#

lista_01 = [ 1 , 27 , 3 ]
chave = chave_de (  lista_01 )
print ( f'chave de { lista_01 } = { chave_de (  lista_01 ) } '  ) 
print ( )

lista_02 = [ 12 , 73 ]
chave = chave_de (  lista_02 )
print ( f'chave de { lista_02 } = { chave_de (  lista_02 ) } '  ) 
print ( )

lista_03 = [ 1273 ]
chave = chave_de (  lista_03 )
print ( f'chave de { lista_03 } = { chave_de (  lista_03 ) } '  ) 
print ( )

#
# formar um dicionario com chaves associadas a duas listas 
#

dicionario = { }

chave_01 = chave_de ( lista_01 ) 
primeiro = 'primeiro' 
update_01 = { chave_01 : primeiro }
dicionario .update ( update_01 )

chave_02 = chave_de ( lista_02 ) 
segundo = 'segundo' 
update_02 = { chave_02 : segundo }
dicionario .update ( update_02 )

print ( f'dicionario = { dicionario } ' )
print ( )

#
# podemos testar se o dicionario retorna 
# o valor correto correspondente à 
# lista_01 e lista_02
#

retorno_01 = dicionario [ chave_de ( lista_01 ) ]
print ( f'dicionario retorna { retorno_01} para chave_de ( { lista_01 } )')
print ()

retorno_02 = dicionario [ chave_de ( lista_02 ) ]
print ( f'dicionario retorna { retorno_02} para chave_de ( { lista_02 } )')
print ()

#
# podemos implementar um dicionário que permite 
# recuperar qual lista corresponde a uma chave 
# determinada 
#

lista_recuperada = {}

chave_01 = chave_de ( lista_01 ) 
update_01 = { chave_01 : lista_01 }
lista_recuperada .update ( update_01 )

chave_02 = chave_de ( lista_02 ) 
update_02 = { chave_02 : lista_02 }
lista_recuperada .update ( update_02 )

#
# podemos testar se o lista_recuperada retorna 
# a lista correta correspondente  
# a chave_de ( lista_01 ) e a chave_de ( lista_02 )
#

retorno_01 = lista_recuperada [ chave_de ( lista_01 ) ]
print ( f'lista_recuperada retorna { retorno_01} para chave_de ( { lista_01 } )')
print ()

retorno_02 = lista_recuperada [ chave_de ( lista_02 ) ]
print ( f'lista_recuperada retorna { retorno_02} para chave_de ( { lista_02 } )')
print ()
a escrita do rastreio da execução do código é:  

chave de [1, 27, 3] = 000010002700003 

chave de [12, 73] = 0001200073 

chave de [1273] = 01273 

dicionario = {'000010002700003': 'primeiro', '0001200073': 'segundo'} 

dicionario retorna primeiro para chave_de ( [1, 27, 3] )

dicionario retorna segundo para chave_de ( [12, 73] )

lista_recuperada retorna [1, 27, 3] para chave_de ( [1, 27, 3] )

lista_recuperada retorna [12, 73] para chave_de ( [12, 73] )
1 resposta

Oii, tudo bem contigo?

Que interessante!

Obrigada por compartilhar esse conhecimento aqui no fórum. E parabéns por toda dedicação :)

Qualquer dúvida estou à disposição. Bons estudos!