Thread doppelte Zeilen
(7 answers)
Opened by gmafx at 2010-02-26 16:44
also nehmen wir an du hast das Array @liste dann entfernst du alle doppelten Zeilen so:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 my %uniqe=(); # durchlaufe das Array rückwärts for my $cnt (reverse (0..$#liste)) { # ein String generieren der "eindeutig" ist my $line=join(',',@{$liste[$cnt]}); # entferne die Zeile aus dem Array wenn sie schon einmal gefunden wurde splice(@liste, $cnt,1) if($uniqe{$line}); # setze diese Zeile als gefunden; $uniqe{$line}++; } Wenn es nicht auf die Reihenfolge ankommt und man einen eindeutigen Trenner der Spalten hat kann man auch so was machen: Code (perl): (dl
)
1 2 my %unique=map{(join(',',@$_),1)}@liste; @liste=map{[spit(',',$_)]}keys(%unique); Das Funktioniert weil in meinem Hash alle Schlüssel (keys) eindeutig sind, setzt man den zusammengefügten String einer Zeile als Schlüssel, so werden alle doppelten entfernt. Nimmt man dann die Schlüssel und trennt die Zeile wieder auf, so bekommt man eine Liste von Arrays, die eindeutig sind. |