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)))
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 itemgetter
en la primera lista con los elementos de otra lista que está vinculada mediante la zip
función usando el groupby
mé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)))
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