Adam's solution is good, but I also want to provide one that uses, as you said, a dictionary. Thus, you have even more flexibility in data analysis, you do not need to worry about the order, and the add operation is also a little easier:
l = [('name1','species','description','country','n/a'),
('name1','species','description','country','plasmid1'),
('name1','species','description','country','plasmid2')]
d = {}
for line in l:
key, val = ' '.join(line[:-1]), line[-1]
if key in d:
d[key] += '\n' + ' '*(len(key)+1) + val
else:
d[key] = val
for key, val in d.items():
print("{} {}".format(key, val))
Conclusion:
name1 species description country n/a
plasmid1
plasmid2
source
share