Python | Combinar listas de valores clave

A veces, mientras trabajamos con listas, podemos presentar un problema en el que necesitamos realizar la función de combinación en la que tenemos la lista de claves y necesitamos crear claves de asignación de diccionario con el valor correspondiente en otra lista. Analicemos ciertas formas en que se puede realizar esta tarea.

Método #1: Usar zip()+ loop +defaultdict()
La combinación del método anterior se puede usar para realizar esta tarea en particular. En esto, usamos la función zip para hacer coincidir los elementos similares de las listas entre sí y luego se usa el bucle para asignar las claves con valor de la lista comprimida para agregar valor a un dictado predeterminado.

# Python3 code to demonstrate working of
# Merge key value list
# Using zip() + loop + defaultdict()
from collections import defaultdict
  
# initializing lists
test_list1 = [0, 0, 0, 1, 1, 1, 2, 2]
test_list2 = ['gfg', 'is', 'best', 'Akash', 'Akshat', 'Nikhil', 'apple', 'grapes']
  
# printing original lists
print("The original list1 is : " + str(test_list1))
print("The original list2 is : " + str(test_list2))
  
# Using zip() + loop + defaultdict()
# Merge key value list
res = defaultdict(list)
for i, j in zip(test_list1, test_list2):
   res[i].append(j)
  
# printing result 
print("The merged key value dictionary is : " + str(dict(res)))
Producción :

La lista original1 es: [0, 0, 0, 1, 1, 1, 2, 2]
La lista original2 es: [‘gfg’, ‘is’, ‘best’, ‘Akash’, ‘Akshat’, ‘Nikhil ‘, ‘manzana’, ‘uvas’]
El diccionario combinado de valores clave es: {0: [‘gfg’, ‘is’, ‘best’], 1: [‘Akash’, ‘Akshat’, ‘Nikhil’], 2: [‘manzana’, ‘uvas’]}

Método n.º 2: usaritemgetter() + groupby() + zip()
Esto es otra forma más de realizar esta tarea en particular. En esto, agrupamos las claves obtenidas itemgetteren la primera lista con los elementos de otra lista que está vinculada mediante la zipfunción usando el groupbymétodo.

# Python3 code to demonstrate working of
# Merge key value list
# Using itemgetter() + groupby() + zip()
from itertools import groupby
from operator import itemgetter
  
# initializing lists
test_list1 = [0, 0, 0, 1, 1, 1, 2, 2]
test_list2 = ['gfg', 'is', 'best', 'Akash', 'Akshat', 'Nikhil', 'apple', 'grapes']
  
# printing original lists
print("The original list1 is : " + str(test_list1))
print("The original list2 is : " + str(test_list2))
  
# Using itemgetter() + groupby() + zip()
# Merge key value list
res = {keys: [i for _, i in sub] for keys, sub in groupby(
         zip(test_list1, test_list2), key = itemgetter(0))}
  
# printing result 
print("The merged key value dictionary is : " + str(dict(res)))
Producción :

La lista original1 es: [0, 0, 0, 1, 1, 1, 2, 2]
La lista original2 es: [‘gfg’, ‘is’, ‘best’, ‘Akash’, ‘Akshat’, ‘Nikhil ‘, ‘manzana’, ‘uvas’]
El diccionario combinado de valores clave es: {0: [‘gfg’, ‘is’, ‘best’], 1: [‘Akash’, ‘Akshat’, ‘Nikhil’], 2: [‘manzana’, ‘uvas’]}

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 *