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))
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))
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