"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo se puede invertir un diccionario con valores de lista?

¿Cómo se puede invertir un diccionario con valores de lista?

Publicado el 2024-11-07
Navegar:762

How Can You Invert a Dictionary with List Values?

Invertir diccionarios con valores de lista: una solución

En este artículo, exploramos el desafío de invertir un diccionario con valores de lista. Dado un diccionario de índice donde las claves son nombres de archivos y los valores son listas de palabras que aparecen en esos archivos, nuestro objetivo es crear un diccionario invertido donde las palabras son claves y los valores son listas de nombres de archivos.

La función de inversión proporcionada, invert_dict, no es aplicable a diccionarios con valores de lista como claves, ya que falla con un "TypeError: tipo no hashable: 'lista'". Esta limitación se debe al hecho de que las claves en los diccionarios deben ser hash, y las listas no son hash.

Para superar este obstáculo, podemos utilizar un enfoque personalizado que recorre en iteración el diccionario original y crea un nuevo diccionario usando setdefault. . Específicamente, recorremos las listas de valores de cada clave en el diccionario original y agregamos las claves correspondientes como valores para esas palabras en el nuevo diccionario invertido.

Aquí hay un ejemplo de implementación de este enfoque:

inverse = {}
for k,v in index.items():
    for x in v:
        inverse.setdefault(x, []).append(k)

Esta solución maneja valores de lista en el diccionario original utilizando el método setdefault para crear una nueva lista si la clave no existe en el diccionario invertido. o agregarlo a una lista existente si la clave ya está presente.

Como resultado, obtenemos un diccionario invertido donde las palabras son claves y los valores son listas de nombres de archivos.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3