Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Februar

SELFHTML Forumsarchiv
Sortierung nach zwei Kriterien - wie nur?

Informationsseite
  1. Seite (PERL) Sortierung nach zwei Kriterien - wie nur? von Markus, 28. 02. 2006, 17:58
nach unten

Sortierung nach zwei Kriterien - wie nur?

Die folgende Nachricht zum Thema stammt von: Markus, 28. 02. 2006, 17:58

Hallo,

ich habe folgenden Hash aus Namen, Zahlen definiert:

%ages = ('Rolf'=>2,'Erwin'=>1,'Otto'=>1,'Michael'=>1,'Uwe'=>1);

Ich möchte nun eine Ausgabe absteigend sortiert nach Zahlen. Bei gleicher Zahl soll dann auch Namen sortiert werden.

@keys = sort{$ages{$b}<=>$ages{$a}} keys %ages;

foreach $key (@keys)
{
 print "$key = $ages{$key}\n";
}

Ausgabe:
Rolf = 2
Michael = 1
Otto = 1
Erwin = 1
Uwe = 1

Wie bekomme ich aber das 2-te Sortierkriterium hin, um folgende Ausgabe zu bekommen:

Ausgabe:
Rolf = 2
Erwin = 1
Michael = 1
Otto = 1
Uwe = 1

Danke im voraus!

nach obennach unten

Sortierung nach zwei Kriterien - wie nur?

Die folgende Nachricht zum Thema stammt von: Benne, 28. 02. 2006, 18:25

Hallo Markus,

»» Wie bekomme ich aber das 2-te Sortierkriterium hin, um folgende Ausgabe zu bekommen:
mit einer simplen Oder Verknüpfung:

@keys = sort{   $ages{$b}  <=> $ages{$a}
             || $names{$a} <=> $names{$b} } keys %ages;


siehe auch sort bei perldoc

Gruß,
Benne
--
ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)

nach obennach unten

Sortierung nach zwei Kriterien - wie nur? [korrigiert]

Die folgende Nachricht zum Thema stammt von: Benne, 28. 02. 2006, 18:27

entschuldigt mich für den Fehler.

@keys = sort{   $ages{$b}  <=> $ages{$a}
             || $names{$a} cmp $names{$b} } keys %ages;

muss das natürlich heißen

Gruß,
Benne
--
ie:% fl:( br:> va:) ls:> fo:| rl:° ss:) de:[ js:| ch:| mo:} zu:)

nach obennach unten

Sortierung nach zwei Kriterien - wie nur? [korrigiert]

Die folgende Nachricht zum Thema stammt von: Markus, 28. 02. 2006, 21:00

hi Benne,

danke dir vielmals!

helau

markus

nach obennach unten

Sortierung nach zwei Kriterien - wie nur?

Die folgende Nachricht zum Thema stammt von: Markus, 01. 03. 2006, 00:29

Hi Benne,

ich habe dich zu früh gelobt. Es klappt leider nicht.

%ages = ('Rolf'=>2,'Erwin'=>1,'Otto'=>1,'Michael'=>1,'Uwe'=>1);

@keys = sort{$ages{$b}  <=> $ages{$a} || $names{$a} cmp $names{$b}} keys %ages;

foreach $key (@keys)
{
 print "$key = $ages{$key}\n";
}

Der Output ist wieder:
Rolf = 2
Michael = 1
Otto = 1
Erwin = 1
Uwe = 1

Ich möchte aber diesen Output haben:
Rolf = 2
Erwin = 1
Michael = 1
Otto = 1
Uwe = 1

Bei gleichen Zahlen soll auch nach Name sortiert werden.

Weist du wo der Fehler ist?

Bye

Markus

nach obennach unten

Sortierung nach zwei Kriterien - wie nur?

Die folgende Nachricht zum Thema stammt von: Struppi, 01. 03. 2006, 08:42

»» Wie bekomme ich aber das 2-te Sortierkriterium hin, um folgende Ausgabe zu bekommen:
»»
»» Ausgabe:
»» Rolf = 2
»» Erwin = 1
»» Michael = 1
»» Otto = 1
»» Uwe = 1

Ihr wart auf dem richtigen Weg:

#!/usr/bin/perl -w
use strict;
my %ages = ('Rolf'=>2,'Erwin'=>1,'Otto'=>1,'Michael'=>1,'Uwe'=>1);
my @keys = sort{   $ages{$b}  <=> $ages{$a}
             || $a cmp $b } keys %ages;


foreach my $key (@keys)
{
 print "$key = $ages{$key}\n";
}


Struppi.
--
Javascript ist toll

nach obennach unten

Sortierung nach zwei Kriterien - wie nur?

Die folgende Nachricht zum Thema stammt von: Markus, 01. 03. 2006, 12:11

Hi Struppi,

tausend Dank an den Profi. Es klappt.

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2006 Teil von Februar

© 1998-2006 Seite Impressum, Software: Classic Forum