Dadas dos listas, una de clave y otra de valores, conviértala en un diccionario con valores de lista, si las claves se asignan a diferentes valores en función del índice, agregue su lista de valores.
Entrada : test_list1 = [5, 6, 6, 6], test_list2 = [8, 3, 2, 9]
Salida : {5: [8], 6: [3, 2, 9]}
Explicación : Elementos con índice 6 en la lista correspondiente, se asignan a 6.Entrada : test_list1 = [6, 6, 6, 6], test_list2 = [8, 3, 2, 9]
Salida : {6: [8, 3, 2, 9]}
Explicación : todo asignado a un solo número.
Método #1: Usar zip() + loop
Esta es una de las formas en que se puede realizar esta tarea. En esto, realizamos el mapeo de las claves a los valores requeridos usando zip() y loop se usa para realizar la iteración de las claves.
Python3
# Python3 code to demonstrate working of # Convert Lists into Similar key value lists # Using loop + zip() # initializing lists test_list1 = [5, 6, 6, 4, 5, 6] test_list2 = [8, 3, 2, 9, 10, 4] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # creating a mesh of keys with empty values list res = {key: [] for key in test_list1} # loop to iterate through keys and values for key, val in zip(test_list1, test_list2): res[key].append(val) # printing result print("The mapped dictionary : " + str(res))
The original list 1 is : [5, 6, 6, 4, 5, 6] The original list 2 is : [8, 3, 2, 9, 10, 4] The mapped dictionary : {5: [8, 10], 6: [3, 2, 4], 4: [9]}
Método #2: Usando defaultdict() + comprensión de lista + zip()
La combinación de las funciones anteriores se puede utilizar para resolver este problema. En esto, realizamos la tarea como un trazador de líneas y se usa defaultdict() para preasignar valores con listas vacías.
Python3
# Python3 code to demonstrate working of # Convert Lists into Similar key value lists # Using defaultdict() + list comprehension + zip() from collections import defaultdict # initializing lists test_list1 = [5, 6, 6, 4, 5, 6] test_list2 = [8, 3, 2, 9, 10, 4] # printing original lists print("The original list 1 is : " + str(test_list1)) print("The original list 2 is : " + str(test_list2)) # creating a mesh of keys using defaultdict res = defaultdict(list) [res[key].append(val) for key, val in zip(test_list1, test_list2)] # printing result print("The mapped dictionary : " + str(dict(res)))
The original list 1 is : [5, 6, 6, 4, 5, 6] The original list 2 is : [8, 3, 2, 9, 10, 4] The mapped dictionary : {5: [8, 10], 6: [3, 2, 4], 4: [9]}
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