"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como você pode inverter um dicionário com valores de lista?

Como você pode inverter um dicionário com valores de lista?

Publicado em 2024-11-07
Navegar:510

How Can You Invert a Dictionary with List Values?

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.

Tutorial mais recente Mais>

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