我有一个任务是在一个大的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 非常感谢!!!
答案 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添加到一起以创建单个列表。最后,这些子结果被连接起来。
您的预期结果将我的结果包装在一个列表中,以便您最终获得单个元素列表。我不明白为什么那是必要的。