仅当前两个序列元素重复时,才从序列列表中删除重复元素 (python)

Remove duplicate elements from a list of sequences ONLY if first two sequence elements are duplicated (python)

我想知道如何删除序列列表中的 "partial" 重复项。特别是,如果列表中两个(或更多)序列的前两个元素相同,我只想在列表中保留这些序列中的一个。我在 python 2.7.

中编码

例如,如果我有:

    [(1, 2, 'keep'), (3, 4, 'also keep'), (1, 2, 'remove'), (3, 4, 'also remove')]

我想return

    [(1, 2, 'keep'), (3, 4, 'also keep')]

这里有两个非常相似的函数可以满足您的需求:

def partial_duplicates1(l):
    check_list = []
    final_list = []
    for item in l:
        first_two_elems = item[:2]
        if first_two_elems not in check_list:
            final_list.append(item)
            check_list.append(first_two_elems)
    return final_list


def partial_duplicates2(l):
    already_included = {item[:2]: False for item in l}
    final_list = []
    for item in l:
        first_two_elems = item[:2]
        if not already_included[first_two_elems]:
            final_list.append(item)
            already_included[first_two_elems] = True
    return final_list