Python:如何通过下一个项目值链接列表中的元组

Kit*_*Kit 4 python python-3.x

如何从Python 3中的元组列表中获得预期结果?

[('I', 'N'),('love', 'V'),('Miley', 'N'),('Cyrus', 'N'),('but', 'ADV'),('hate', 'V'),('Liam', 'N'),('Hemsworth', 'N')]
Run Code Online (Sandbox Code Playgroud)

预期成绩:

['I', 'love', 'Miley Cyrus', 'but', 'hate', 'Liam Hemsworth']
Run Code Online (Sandbox Code Playgroud)

Dan*_*ejo 5

可以使用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)
Run Code Online (Sandbox Code Playgroud)

输出

['I', 'love', 'Miley Cyrus', 'but', 'hate', 'Liam Hemsworth']
Run Code Online (Sandbox Code Playgroud)

上面的列表推导等价于下面的 for 循环:

result = []
for k, group in groupby(data, key=itemgetter(1)):
    result.append(' '.join(t[0] for t in group))
Run Code Online (Sandbox Code Playgroud)