如何从* Python 3 *中的元组列表中获得预期结果?
[('I', 'N'),('love', 'V'),('Miley', 'N'),('Cyrus', 'N'),('but', 'ADV'),('hate', 'V'),('Liam', 'N'),('Hemsworth', 'N')]
预期成绩:
['I', 'love', 'Miley Cyrus', 'but', 'hate', 'Liam Hemsworth']
问题来源:stackoverflow
您可以使用itertools.groupby对第二个元素进行分组,然后提取每个组的第一个元素:
from itertools import groupby
from operator import itemgetter
data = [('I', 'N'), ('love', 'V'), ('Miley', 'N'), ('Cyrus', 'N'), ('but', 'ADV'), ('hate', 'V'), ('Liam', 'N'),
('Hemsworth', 'N')]
result = [' '.join(t[0] for t in group) for k, group in groupby(data, key=itemgetter(1))]
print(result)
输出
['I', 'love', 'Miley Cyrus', 'but', 'hate', 'Liam Hemsworth']
上面的列表理解等效于以下for循环:
result = []
for k, group in groupby(data, key=itemgetter(1)):
result.append(' '.join(t[0] for t in group))
回答来源:stackoverflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。