删除大小> 1的字符串/浮点数列表中的部分重复项

时间:2017-04-13 18:32:47

标签: python list python-3.x

我目前正试图在主要字符串输入列表中删除一些“部分重复”(元组中的某些位置可能匹配)。这将是列表中的一些样本

[['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])

1 个答案:

答案 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']