如何从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)
可以使用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)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |