perl Hash nach Werten sortieren.

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von aktivfrühstück, 22.06.2007.

  1. #1 aktivfrühstück, 22.06.2007
    aktivfrühstück

    aktivfrühstück Eroberer

    Dabei seit:
    19.03.2007
    Beiträge:
    66
    Zustimmungen:
    0
    Hallo Leute,

    ich mal wieder:)

    gibt es eine Möglichkeit in Perl einen Hash nach den Werten absteigend bzw. aufsteigend zu sortieren?

    mit:

    Code:
    foreach $temp(sort{$a <=> $b} keys %hash)
    {
    print "schlüssel: $temp und zugehöriger Wert: $hash{$temp}\n";
    }
    
    kann man ja die Schlüssel aufsteigend sortieren und den zugehörigen Wert finden.
    ----
    Ich möchte aber die Werte aufsteigend sortieren und den zugehörigen Schlüssel finden.

    ich möchte nun der sortierten Wertliste wieder die passenden schlüssel zufügen.
    Aber man benötigt ja den SChlüssel um auf den Wert zuzugreifen
    geht das auch irgendwie andersrum???

    Jetz könnte man sagen warum nehme ich nicht einfach die Werte und nutze diese als Schlüssel. Aber so soll das nicht sein:)

    grüße an alle!:))
    falko
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 supersucker, 22.06.2007
    supersucker

    supersucker Foren Gott

    Dabei seit:
    21.02.2005
    Beiträge:
    3.873
    Zustimmungen:
    0
    Ähm,

    wie du willst die Werte sortiert haben, jedem Wert soll aber noch sein key zugeordnet sein?

    Wieso schreibst du die Werte nicht sortiert zusammen mit den keys in ein array of arrays?
     
  4. #3 smg, 22.06.2007
    Zuletzt bearbeitet: 22.06.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    du kannst eigentlich ein hash nicht nacht werten sortieren, wieso sollte man sowas? ist doch doof.

     
  5. #4 angelsfall, 22.06.2007
    Zuletzt bearbeitet: 22.06.2007
    angelsfall

    angelsfall Routinier

    Dabei seit:
    09.05.2005
    Beiträge:
    315
    Zustimmungen:
    0
    Ort:
    Berlin
    Code:
    foreach my $temp (sort { $hash{$a} <=> $hash{$b} } keys %hash) {
      print $temp . " => " . $hash{$temp};
    }
    
    {edit nach smg's edit}
    Aha. Du kennst den Anwendungsfall doch gar nicht.

    Nebenbei, man sollte map nicht verwenden, wenn man den Rückgabewert von map nicht verwendet oder Werte direkt maniupliert. Es ist zudem unleserlich.
     
  6. #5 Wolfgang, 23.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Was ist das für eine sinnlose und falsche Aussage?

    Die Lösung steht ja schon da und ist auch der Perlfaq zu entnehmen.


    Aber warum das doof sein soll, erschließt sich mir nicht wirklich.

    Das simpelste Anwendungsgebiet ist das Zählen von beliebigen Daten über gleiche Keywerte, die dann nach Häufigkeit ausgegeben werden.

    Etwa gleiche Zeilen einer Datei nach Häufigkeit
    Code:
    perl -ane '(/^$/)?1:$h{$_}++;END{print "$h{$_}\t$_" for (sort{$h{$b}<=>$h{$a}} keys %h )}' DATEI
     
  7. #6 aktivfrühstück, 25.06.2007
    aktivfrühstück

    aktivfrühstück Eroberer

    Dabei seit:
    19.03.2007
    Beiträge:
    66
    Zustimmungen:
    0
    Hey und Guten Morgen,

    Dankeschön, es funktioniert:) und wieder was dazugelernt!

    Habe so eine Art Ranking gemacht. Die SChlüssel sind die Personennamen und die Werte die Beurteilungen. Dazu wollte ich den Besten oben stehen haben.


    gruß :)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

perl Hash nach Werten sortieren.

Die Seite wird geladen...

perl Hash nach Werten sortieren. - Ähnliche Themen

  1. [Perl] Check auf Referenz...Hash

    [Perl] Check auf Referenz...Hash: Hallo! Mal ne kleine Frage. Gibt es ein Funktion mit der ich checken kann, ob in einem Hash der Value eine Referenz auf einen weiter Hash...
  2. Perl: Key im Hash via Referenz setzen

    Perl: Key im Hash via Referenz setzen: Hallo zusammen, ich habe da ein Problem und weiss nicht so recht weiter. Auch selfhtml --> Perl konnte mir nicht so recht weiterhelfen....
  3. Perl: Array von Hashes

    Perl: Array von Hashes: Hallo, ich komme nicht weiter. Ich will in einem Array Hashes speichern und in einer Ausgabefunktion darauf zugreifen. Folgendermaßen bin ich...
  4. Perl: Mehrdimensionale Hashs an Unterprogramm übergeben

    Perl: Mehrdimensionale Hashs an Unterprogramm übergeben: Hallo, ich habe folgendes Problem: Ich möchte ein mehrdimensionales Hash der Art ---------- $hash{"gix","gax"} = "..." ---------- als eine...
  5. Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern

    Linux Foundation: Hyperledger-Projekt startet mit 30 Mitgliedern: Das Hyperledger-Projekt der Linux Foundation will eine neue Form der dezentralisierten Kontoführung nach dem Prinzip der »distributed ledger« bei...