Reputation: 1825
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
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
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