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

2024-04-27 22:06:16 发布

您现在位置: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']

Tags: 列表but元组liam成果advlovehate
2条回答

使用itertools.groupby

Ex:

from itertools import groupby
data = [('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']

您可以使用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']

上述list comprehension相当于以下for循环:

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

相关问题 更多 >