Python: convierte listas en listas de valores clave similares

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)) 
Producción

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))) 
Producción

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

Deja una respuesta

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