如果第二个元素相同,是否合并list a tuples中的第一个元素?

2024-10-02 00:27:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组列表:

[('Donald', 'PERSON'), ('Trump', 'PERSON'), ('enters', 'O'), ('the', 'O'), ('White', 'LOCATION'), ('House', 'LOCATION')]

我想要的输出是:

^{pr2}$

下面的代码让我更接近想要的结果,但我还不太熟悉groupby函数。在

mergedTags = []
    from itertools import groupby
    for tag, chunk in groupby(tagList, lambda x: x[1]):
        if tag != "O":
            tagMerged = " ".join(w for w, t in chunk)
            mergedTags.extend([tagMerged])
        else:
            #tagMerged = " ".join(t for t, w in chunk)
            for word, chunk in groupby(tagList, lambda x: x[0]):
                mergedTags.extend([word])

    print(mergedTags)

Tags: lambdainfortaglocationwordperson元组
1条回答
网友
1楼 · 发布于 2024-10-02 00:27:20

您可以将^{}列表理解表达式一起使用:

from itertools import groupby
my_list = [('Donald', 'PERSON'), ('Trump', 'PERSON'), ('enters', 'O'), ('the', 'O'), ('White', 'LOCATION'), ('House', 'LOCATION')]

output_list = [tuple(i[0] for i in e) for _, e in groupby(my_list, lambda x: x[1])]
#                 ^ generate the desired tuple

其中output_list的值为:

^{pr2}$

相关问题 更多 >

    热门问题