Dadas dos listas de longitudes posiblemente desiguales, la tarea es comprimir dos listas en el diccionario de modo que la lista con una longitud más corta se repita.
Dado que el diccionario en Python es una colección desordenada de pares clave:valor, el resultado se imprimirá de manera desordenada.
Método #1: Usaritertools()
# Python code to demonstrate # return the sum of values of a dictionary # with same keys in the list of dictionary from itertools import cycle # Initialising list of dictionary ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = [1, 2, 3] # zipping in cyclic if shorter length result = dict(zip(ini_lis1, cycle(ini_lis2))) # printing resultant dictionary print("resultant dictionary : ", str(result))
Producción:
resultant dictionary : {'b': 2, 'd': 1, 'c': 3, 'e': 2, 'a': 1}
Método #2: Usar la comprensión de dictado
# Python code to demonstrate # return the sum of values of dictionary # with same keys in list of dictionary from itertools import cycle # Initialising list of dictionary ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = [1, 2, 3] # zipping in cyclic if shorter length result = {v: ini_lis2[i % len(ini_lis2)] for i, v in enumerate(ini_lis1)} print("resultant dictionary : ", str(result))
Producción:
resultant dictionary : {'d': 1, 'c': 3, 'e': 2, 'b': 2, 'a': 1}
Método #3: Usar deque()
# Python code to demonstrate # return the sum of values of dictionary # with same keys in list of dictionary from collections import deque # Initialising list of dictionary ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = deque([1, 2, 3]) # zipping in cyclic if shorter length result = {} for letter in ini_lis1: number = ini_lis2.popleft() result[letter] = number ini_lis2.append(number) print("resultant dictionary : ", str(result))
Producción:
resultant dictionary : {'c': 3, 'd': 1, 'b': 2, 'e': 2, 'a': 1}
Publicación traducida automáticamente
Artículo escrito por garg_ak0109 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA