Schrift
[thread]7989[/thread]

mehrdimensionales Hash sortieren

Leser: 1


<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
zipster
 2006-05-17 14:02
#66196 #66196
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hi,

erst mal vor Weg. Folgenden Thread habe ich bereits gelesen und so wie ich es verstanden hatte wollte Master was anderes als ich.
Hash sortieren

Man kann ja Hashes so sortieren
Code: (dl )
1
2
3
foreach my $zeile (sort { $hash{$a} <=> $hash{$b} } keys %hash) {
...
}


Das ist auch genau das was ich brauche bloß arbeite ich mit einem mehrdimensionalen Hash und ich bekomme es nicht hin das oben so umzubauen das es für mich passt, vielleicht könnt ihr mir dabei mal weiterhelfen.

Mein Hash ist wie folgt aufgebaut.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
%HASH->ID->VORNAME
->NACHNAME
->STRASSE
->...
#Hier nochmal ein Beispiel
%HASH->1->Fritz
->Müller
->Fuchsweg
->...
->2->Joachim
->Schmidt
->Bahnhof Str.
->...
...


Ich hätte halt gern das ich ein Mal nach Name sortieren kann oder nach Strasse usw. um es dann in einem Interface anzeigen zu können.


Gruß
Seri aka Zipster\n\n

<!--EDIT|zipster|1147860366-->
lichtkind
 2006-05-17 14:41
#66197 #66197
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
klingt nach einer aufgabe für superrandal....

ne echt ne schwartzsche trafo wäre hier das mittel meiner wahl einfach mit map alle starssen oder was du willst in zweiten index kopieren, sortieren und so sortierten array der indexe ausgeben.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
zipster
 2006-05-17 14:50
#66198 #66198
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
wer oder was ist superrandal?

Würde gern das Hash behalten. Denn befülle damit Entrys usw. und schreibe das danach in eine Datenbank. Und wenn ich auf einmal Arrays nutze nur um eine sortierung durchzuführen müßte ich hintendran dann auch alles verändern und immer abfragen "Hab ich jetzt sortiert oder nicht?"
GwenDragon
 2006-05-17 15:23
#66199 #66199
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
superrandal?

Wohl "Big Perl Daddy" Randal Schwartz ;)
lichtkind
 2006-05-17 15:35
#66200 #66200
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ja gwen,

zipster natürlich behältst du den hash, was die trafo macht ist nur ein zusätzlichen array erstellen der die indize des hashes enthält, sortiert nach deinem wunsch.\n\n

<!--EDIT|lichtkind|1147866795-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
lichtkind
 2006-05-17 15:40
#66201 #66201
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
1: my @sortedKeys =           
2: map { $_->[1] }
3: sort { $a->[0] <=> $b->[0] }
4: map { [ $hash{$_}{strasse}, $_ ] }
5: keys %hash; # erzeugt liste der keys
\n\n

<!--EDIT|lichtkind|1147866826-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
zipster
 2006-05-17 15:51
#66202 #66202
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Ach du hast das anders gemeint, ups sorry...

Heißt das das ich dann es statt so
Code: (dl )
1
2
3
    for my $datensatz_id (sort keys(%{$hash_ref})){
my $e = $hlist->addchild("");
...


so machen soll?
Code: (dl )
1
2
3
for my $datensatz_id (@sortedKeys){
my $e = $hlist->addchild("");
...
lichtkind
 2006-05-17 15:58
#66203 #66203
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
wenn du die adressen sortiert ausgeben willst reicht

Code: (dl )
1
2
3
for my $key (@sortedKeys){
$Adresse = \%{$hash{$key}};
}


kannst aber auch direkt machen, dein letztes post war etwas undeutlich für mich.\n\n

<!--EDIT|lichtkind|1147867241-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
zipster
 2006-05-17 16:58
#66204 #66204
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Irgendwie sortiert er es immer gleich.
Code: (dl )
1
2
3
4
5
1: my @sortedKeys =          
2: map { $_->[1] }
3: sort { $a->[0] <=> $b->[0] }
4: map { [ $hash{$_}{strasse}, $_ ] }
5: keys %hash; # erzeugt liste der keys

Ob ich da jetzt Strasse oder sonst was stehen habe es kommt immer das gleiche raus... :(

/EDIT
Bei Hausnummer und Postleitzahl funktiniert es. Also geht es nur bei Buchstaben nicht...
Mmmhhh...\n\n

<!--EDIT|zipster|1147871238-->
lichtkind
 2006-05-17 17:09
#66205 #66205
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
hängt auch von der sortiermethode ab :)
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2006-05-17 14:02.