2 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
您可以使用 itertools.groupby 按第二個(gè)元素進(jìn)行分組,然后提取每個(gè)組的第一個(gè)元素:
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 循環(huán):
result = []
for k, group in groupby(data, key=itemgetter(1)):
result.append(' '.join(t[0] for t in group))

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
用itertools.groupby
前任:
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']
添加回答
舉報(bào)