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