我目前正试图在主要字符串输入列表中删除一些“部分重复”(元组中的某些位置可能匹配)。这将是列表中的一些样本
[['Dave', '1'],
['Dave', '2'],
['Dave', '3'],
['Dave', '4'],
['Jack Jones', '5'],
['Joaquin', '6'],
['Joaquin', '7'],
['Joaquin', '8']]
现在,我想删除此列表中的每一行,其中第一个位置的元素与前一行的第一个位置元素匹配,如下所示:
[['Dave', '1'],
['Jack Jones', '5'],
['Joaquin', '6']]
我尝试过这样做,就像我在考虑使用数值数据的数组对象时那样 - 但我认为我在滥用不应该使用的对象。
def duplicate_remover(x):
dupesremoved = []
for i in range(len(x)):
if x[i] != x[i-1]:
dupesremoved.append(x[i])
答案 0 :(得分:1)
您可以使用itertools.groupby
,但实际方法可能因实际输入格式而异:
it = [
['Dave', '1'],
['Dave', '2'],
['Dave', '3'],
['Dave', '4'],
['Jack Jones', '5'],
['Joaquin', '6'],
['Joaquin', '7'],
['Joaquin', '8'],
]
from itertools import groupby
from operator import itemgetter
for first, group in groupby(it, key=itemgetter(0)):
print(next(group))
打印:
['Dave', '1']
['Jack Jones', '5']
['Joaquin', '6']