Python | Comprimir dos listas de longitud desigual en el diccionario

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

Deja una respuesta

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