- A+

Category：Languages

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) `

**Output**

`{'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) `