仅当前两个序列元素重复时,才从序列列表中删除重复元素 (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
我想知道如何删除序列列表中的 "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