3
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

1
  • 1
    what do you mean with common elements? Common in the sense of position, ASCII-number (i.e. ascending/descending sorting...)? Commented Jun 4, 2012 at 6:52

2 Answers 2

14

[(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] 
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks BrenBarn, This is what i actually want
2

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(('',))) 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.