NullException
NullException

Reputation: 4510

Python List of tuples positionally

2 lists of tuples are like this,

a=[(id,     name, value_1, value_2),(id,    name, value_3, value_4)..]
b=[(id_key, name, value_5, value_6),(id_key,name, value_7, value_8)..]

I want to merge it like this,

c=[(id,'', name, value_1, value_2),
   (id,'', name, value_3, value_4),
   ..
   ..
   ('', id_key,name , value_5, value_6),
   ('', id_key,name , value_7, value_8)
   ..
]

So, second list will concatenated to first list with members shifted.

Whats the best way to do this?

Upvotes: 0

Views: 62

Answers (1)

Martijn Pieters
Martijn Pieters

Reputation: 1121814

Use two list comprehensions to build new tuples from the old:

[(t[0], '') + t[1:] for t in a] + [('',) + t for t in b]

Demo:

>>> a=[('id',     'name', 'value_1', 'value_2'),('id',    'name', 'value_3', 'value_4')]
>>> b=[('id_key', 'name', 'value_5', 'value_6'),('id_key','name', 'value_7', 'value_8')]
>>> [(t[0], '') + t[1:] for t in a] + [('',) + t for t in b]
[('id', '', 'name', 'value_1', 'value_2'), ('id', '', 'name', 'value_3', 'value_4'), ('', 'id_key', 'name', 'value_5', 'value_6'), ('', 'id_key', 'name', 'value_7', 'value_8')]

Upvotes: 2

Related Questions