2017-04-13 1 views
0

Ich versuche gerade, einige "partielle Duplikate" (einige Positionen in einem Tupel können übereinstimmen) in einer Liste von hauptsächlich String-Eingaben zu löschen. Dies würdeLöschen von partiellen Duplikaten in einer Liste von Zeichenfolgen/Gleitkommazahlen der Größe> 1

[['Dave', '1'], 
['Dave', '2'], 
['Dave', '3'], 
['Dave', '4'], 
['Jack Jones', '5'], 
['Joaquin', '6'], 
['Joaquin', '7'], 
['Joaquin', '8']] 

nun einige Beispiele aus der Liste sein, würde Ich mag jede Zeile in dieser Liste löschen, wo das Element in der ersten Position entspricht die erste Positions Element Verfahren Reihe wie folgt:

[['Dave', '1'], 
['Jack Jones', '5'], 
['Joaquin', '6']] 

Ich habe versucht, dies zu tun, als würde ich ein Array-Objekt mit numerischen Daten betrachten - aber ich denke, dass ich Objekte missbrauche, wo ich nicht sein sollte.

def duplicate_remover(x): 
    dupesremoved = [] 

    for i in range(len(x)): 
     if x[i] != x[i-1]: 
      dupesremoved.append(x[i]) 
+0

Geben Sie uns Daten tatsächliche Probe mit zu arbeiten (formatiert als kompilierbarer Python) – Alexander

+1

'x [i]! = x [i]' ist immer 'Falsch'. Was ist der Sinn, Code so zu veröffentlichen? Was ist mit dem "numpy" -Tag? –

+0

Was ist "Tabellenform"? Das ist keine echte Python-Datenstruktur. – hpaulj

Antwort

1

könnten Sie itertools.groupby verwenden, aber der tatsächliche Ansatz könnte abhängig von Ihrem aktuellen Eingabeformat unterscheiden:

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)) 

die druckt:

['Dave', '1'] 
['Jack Jones', '5'] 
['Joaquin', '6'] 
+0

Danke für die Antwort. Ich ging voran und fügte die Formatierung aus der Spalte Wert in meinem Variablen Explorer für zusätzliche Klarheit. – user7351362

+0

@ user7351362 Ich entfernte das zweite Beispiel, aber das erste Beispiel sollte mit Ihrem Beispiel arbeiten. :) – MSeifert

+0

vielen Dank! Hat meine Bearbeitung geholfen, der korrekten Formatierung zu entsprechen oder war sie immer noch etwas mehrdeutig? Einige andere Antworten waren damit beschäftigt und es ist etwas, woran ich arbeiten sollte. Nochmals vielen Dank für Ihre Hilfe! – user7351362

Verwandte Themen