Python: mapeo cruzado de listas de valores de dos diccionarios

Dados dos diccionarios con valores de lista, realice el mapeo de claves de la primera lista con valores de otra lista, comprobando el vínculo entre valores y claves.

Entrada : test_dict1 = {“Gfg”: [4, 10], “Best”: [8, 6], “is”: [9, 3]}, test_dict2 = {6: [15, 9], 8: [ 6, 3], 7: [9, 8], 9: [10, 11]} Salida : {‘Mejor’: [6, 3, 15, 9], ‘es’: [10, 11]} Explicación : «Mejor» tiene 8 y 6, que se asignan a 6, 3 y 15, por lo tanto, 9 de salida para esa clave. Entrada : test_dict1 = {“Gfg”: [4, 10], “Best”: [18, 16], “is”: [9, 3]}, test_dict2 = {6: [15, 9], 8: [ 6, 3], 7 : [9, 8], 9 : [10, 11]} Salida : {‘is’: [10, 11]} Explicación : Solo 9 presentes como clave posible.

Método #1: Usando loop + setdefault() + extend()

La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, realizamos la tarea de obtener las claves coincidentes con valores usando get() y setdefault se usa para construir una lista vacía para el mapeo.

Python3

# Python3 code to demonstrate working of
# Cross mapping of Two dictionary value lists
# Using loop + setdefault() + extend()
 
# initializing dictionaries
test_dict1 = {"Gfg" : [4, 7], "Best" : [8, 6], "is" : [9, 3]}
test_dict2 = {6 : [15, 9], 8 : [6, 3], 7 : [9, 8], 9 : [10, 11]}
 
# printing original lists
print("The original dictionary 1 is : " + str(test_dict1))
print("The original dictionary 2 is : " + str(test_dict2))
 
res = {}
 
# getting all values of first dictionary
for key, val in test_dict1.items():
    for key1 in val:
         
        # getting result with default value list and extending
        # according to value obtained from get()
        res.setdefault(key, []).extend(test_dict2.get(key1, []))
 
# printing result
print("The constructed dictionary : " + str(res))
Producción

The original dictionary 1 is : {'Gfg': [4, 7], 'Best': [8, 6], 'is': [9, 3]}
The original dictionary 2 is : {6: [15, 9], 8: [6, 3], 7: [9, 8], 9: [10, 11]}
The constructed dictionary : {'Gfg': [9, 8], 'Best': [6, 3, 15, 9], 'is': [10, 11]}

Método #2: Uso de comprensión de lista + comprensión de diccionario

Esta es una forma más en la que se puede resolver este problema. En esto, extraemos todo el mapeo utilizando la comprensión de listas y luego construimos un nuevo diccionario mediante el mapeo cruzado de los valores extraídos.

Python3

# Python3 code to demonstrate working of
# Cross mapping of Two dictionary value lists
# Using list comprehension + dictionary comprehension
 
# initializing dictionaries
test_dict1 = {"Gfg" : [4, 7], "Best" : [8, 6], "is" : [9, 3]}
test_dict2 = {6 : [15, 9], 8 : [6, 3], 7 : [9, 8], 9 : [10, 11]}
 
# printing original lists
print("The original dictionary 1 is : " + str(test_dict1))
print("The original dictionary 2 is : " + str(test_dict2))
 
# using internal and external comprehension to
# solve problem
res = {key: [j for i in val if i in test_dict2 for j in test_dict2[i]]
      for key, val in test_dict1.items()}
 
# printing result
print("The constructed dictionary : " + str(res))
Producción

The original dictionary 1 is : {'Gfg': [4, 7], 'Best': [8, 6], 'is': [9, 3]}
The original dictionary 2 is : {6: [15, 9], 8: [6, 3], 7: [9, 8], 9: [10, 11]}
The constructed dictionary : {'Gfg': [9, 8], 'Best': [6, 3, 15, 9], 'is': [10, 11]}

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *