Create a dictionary by zipping together two lists of uneven length

  • A+

I have two lists different lengths, L1 and L2. L1 is longer than L2. I would like to get a dictionary with members of L1 as keys and members of L2 as values.

As soon as all the members of L2 are used up. I would like to start over and begin again with L2[0].

L1 = ['A', 'B', 'C', 'D', 'E']     L2 = ['1', '2', '3']     D = dict(zip(L1, L2))     print(D) 

As expected, the output is this:

{'A': '1', 'B': '2', 'C': '3'} 

What I would like to achieve is the following:

{'A': '1', 'B': '2', 'C': '3', 'D': '1', 'E': '2'} 


Use itertools.cycle:

from itertools import cycle  L1 = ['A', 'B', 'C', 'D', 'E'] L2 = ['1', '2', '3']  result = dict(zip(L1, cycle(L2)))  print(result) 


{'E': '2', 'B': '2', 'A': '1', 'D': '1', 'C': '3'} 

As an alternative you could use enumerate and index L2 modulo the length of L2:

result = {v: L2[i % len(L2)] for i, v in enumerate(L1)} print(result) 


:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: