Python:如何按下一项值链接列表中的元组

如何从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']


森林海
浏览 111回答 2
2回答

心有法竹

您可以使用 itertools.groupby 按第二个元素进行分组,然后提取每个组的第一个元素:from itertools import groupbyfrom operator import itemgetterdata = [('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))

守候你守候我

用itertools.groupby前任:from itertools import groupbydata = [('I', 'N'),('love', 'V'),('Miley', 'N'),('Cyrus', 'N'),('but', 'ADV'),('hate', 'V'),('Liam', 'N'),('Hemsworth', 'N')]result = [" ".join(m for m, _ in v) for k, v in groupby(data, lambda x: x[1])]print(result)输出:['I', 'love', 'Miley Cyrus', 'but', 'hate', 'Liam Hemsworth']
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python