es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Diccionario de Python: clave con múltiples palabras clave y un único valor idéntico

Estoy intentando crear un diccionario de la siguiente manera:

clave (file_size checksum) = nombre_de_archivo.

Quiero que las palabras clave dobles formen una clave tomando en cuenta ambos valores. Estas claves se derivan del archivo real en cuestión. Si la clave coincide, tengo un archivo duplicado, no solo un nombre de archivo duplicado.

Es fácil determinar la duplicidad si hubiera una sola clave: nombre_de_archivo. Pero no todos los archivos tendrán el mismo nombre de archivo, ya sea por ruta o en el nombre real de archivo. Hasta ahora, ningún sitio web de Python ha podido proporcionar una respuesta. Aunque uno tenía este formato, no lo he vuelto a encontrar.

He intentado varias combinaciones de corchetes y comas con poco efecto.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para crear el diccionario que se está describiendo, se puede usar una tupla como clave. El primer elemento de la tupla sería el tamaño del archivo y el segundo elemento sería el checksum, ambos derivados del archivo real en cuestión. El valor del par clave-valor sería el nombre del archivo. Aquí hay un ejemplo de cómo crear tal diccionario:

    file_dict = {(tamaño_archivo, checksum): nombre_archivo}
    

    Para verificar duplicados, se puede iterar sobre los valores del diccionario y comparar los tamaños de archivo y checksum. Si encuentra una coincidencia, tiene un archivo duplicado. Algo como esto:

    duplicados = {}
    for clave, valor in file_dict.items():
        # recorre todas las claves y valores del diccionario
        if clave in duplicados:
            # si la clave ya existe en el diccionario de duplicados, saltarla
            continuar
        for otra_clave, otro_valor in file_dict.items():
            # recorre todas las demás claves y valores del diccionario
            if clave == otra_clave:
                # omite comparar la clave consigo misma
                continuar
            if clave[0] == otra_clave[0] and clave[1] == otra_clave[1]:
                # si el tamaño y el checksum del archivo son iguales, tenemos un duplicado
                duplicados[clave] = [valor, otro_valor]
                # almacena ambos nombres de archivo como el valor del diccionario de duplicados
                romper
    

    Este código creará un diccionario de duplicados donde las claves son los tamaños de archivo y checksum duplicados, y los valores son listas de los nombres de archivo de los archivos duplicados.

    Tenga en cuenta que este código asume que los valores de tamaño_archivo y checksum son hashables, lo cual es generalmente el caso. Si no lo son, se pueden convertir a un tipo hashable, como una cadena o una tupla.

Comments are closed.