Invertendo dicionários com valores de lista: uma solução
Neste artigo, exploramos o desafio de inverter um dicionário com valores de lista. Dado um dicionário de índice onde as chaves são nomes de arquivos e os valores são listas de palavras que aparecem nesses arquivos, pretendemos criar um dicionário invertido onde as palavras são chaves e os valores são listas de nomes de arquivos.
A função de inversão fornecida, invert_dict, não é aplicável a dicionários com valores de lista como chaves, pois falha com um "TypeError: tipo inacessível: 'lista'". Essa limitação decorre do fato de que as chaves nos dicionários devem ser hasháveis, e as listas não são hasháveis.
Para superar esse obstáculo, podemos utilizar uma abordagem personalizada que itera através do dicionário original e cria um novo dicionário usando setdefault . Especificamente, iteramos pelas listas de valores de cada chave no dicionário original e adicionamos as chaves correspondentes como valores para essas palavras no novo dicionário invertido.
Aqui está um exemplo de implementação desta abordagem:
inverse = {}
for k,v in index.items():
for x in v:
inverse.setdefault(x, []).append(k)
Esta solução lida com valores de lista no dicionário original usando o método setdefault para criar uma nova lista se a chave não existir no dicionário invertido, ou anexar a uma lista existente se a chave já estiver presente.
Como resultado, obtemos um dicionário invertido onde as palavras são chaves e os valores são listas de nomes de arquivos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3