Asif
Asif

Reputation: 1825

Python list of tuples

L1 = ['A', 'B', 'C', 'D'] 
L2 = [('A', 10)], ('B', 20)]

Now from these two list how can i generate common elements

output_list = [('A', 10), ('B', 20), ('C', ''), ('D', '')]

How can i get output_list using L1 and L2?

I tried the following

  for i in L2:
    for j in L1:
       if i[0] == j:
           ouput_list.append(i)
       else:
           output_list.append((j, ''))

But i'm not getting the exact out which i want

Upvotes: 3

Views: 190

Answers (2)

Lev Levitsky
Lev Levitsky

Reputation: 65791

In case you are sure the order of the lists is right and L2 is always shorter or same length:

from itertools import cycle
L2 + zip(L1[len(L2):], cycle(('',)))

Upvotes: 2

BrenBarn
BrenBarn

Reputation: 251355

[(k, dict(L2).get(k, '')) for k in L1]

You can pull the dict(L2) out of the list comprehension if you don't want to recalculate it each time (e.g., if L2 is large).

d = dict(L2)
[(k, d.get(k, '')) for k in L1]

Upvotes: 14

Related Questions