合并元组列表的值

时间:2017-05-25 10:59:13

标签: python

我有一个任务是在一个大的gzip文件(> 1G)中逐行读取,然后将原始数据作为消息推送到RabbitMQ。单个字段的值(在本例中为同义词)可以位于不同的行上。所以我逐行读取每行作为一条消息,然后通过键减少(在这种情况下是字母' A')

所以我有一个像这样的元组列表

a = [('ctdbase-0.1', 'disease', 'A', 'synonyms', ['A']), ('ctdbase-0.1', 'disease', 'A', 'synonyms', ['a'])]

如何合并同义词

的值

我期望的结果看起来像这样

a = [('ctdbase-0.1', 'disease', 'A', 'synonyms', ['A', 'a'])]

我知道我可以在Dict中做这样的事情,但我不能在这里使用Dict 非常感谢!!!

1 个答案:

答案 0 :(得分:1)

您可以执行类似

的操作
>>> a[0][:-1] + (sum((x[-1] for x in a), []),)
('ctdbase-0.1', 'disease', 'A', 'synonyms', ['A', 'a'])

这假设您的所有元组仅在最后一个元素中有所不同。它从第一个元组获取前n-1个值,并将所有last-element-lists添加到一起以创建单个列表。最后,这些子结果被连接起来。

您的预期结果将我的结果包装在一个列表中,以便您最终获得单个元素列表。我不明白为什么那是必要的。