2 Listen in 1 Hash zusammenfügen
Stefan
- perl
Hi,
ich hab mal wieder eine Frage zu Perl. Nachdem ich die PerlDocs und FAQs durchstöbert hab und nichts gefunden hab wend ich mich an euch.
Ich habe 2 Listen,wovon ich die eine als Keys in den Hash fügen will und die andere als Values. Die Reihenfolge inerhalb der beiden Listen stimmt schon überein, das heißt das erste Element der 1.Liste gehört zum ersten Wert der 2.Liste.
Wenn ich %hash = @Liste1; mache fügt er die Liste als Keys und als Values abwechselnd ein.
Meine zweite Idee war dann Keys %hash = @Liste1; brachte mir bis jetzt nur leere Listen ein....
Was mach ich nun verkehrt?? Ich dank euch schonmal für eure Hilfe!
Greez
STefan
Hi,
Wenn ich %hash = @Liste1; mache fügt er die Liste als Keys und als Values abwechselnd ein.
Meine zweite Idee war dann Keys %hash = @Liste1; brachte mir bis jetzt nur leere Listen ein....
was hälst Du von einer Schleife? Ich weiß, sowas antiquiertes ist hochgradig abwegig, da kommt man nicht so ohne weiteres drauf, aber...
Cheatah
Hi,
was hälst Du von einer Schleife? Ich weiß, sowas antiquiertes ist hochgradig abwegig, da kommt man nicht so ohne weiteres drauf, aber...
Glaub mir die Idee kam mir auch schon, aber an der Realisierung haperts dann doch irgendwie...
Mit foreach weis ich nicht wie ich dem Rechner sagen soll das er jeweils immer nur den erste Werte von den beiden listen nehmen soll:
foreach $element (@liste1)
{ ....???}
Mit einer normalen for-Schleife ging es sicher auch, aber das müsste ich ja mit dem Indexieren anfangen.
for ($i=0;$#liste1;$i++)
{
$key=$liste1[$i];
$hash{$key}=$liste2[$i];
}
Meinst du es so ungefähr?? Wenn ja dann mach ich immernoch was falsch weil das ganze in einer Endlosschleife endet......:(
Stefan
FALSCH:
for ($i=0;$#liste1;$i++)
RICHTIG:
for ($i=0;i<$liste1;$i++)
FALSCH:
for ($i=0;$#liste1;$i++)RICHTIG:
for ($i=0;i<$liste1;$i++)
jep, da war der Fuchs begraben, schon blöd wenn man nichtmal ne for-schleife richtig zusammenbekommt*Asche übers haupt*....jetzt funzt es jedenfalls....:)
dankeschön
Stefan
Hallo,
FALSCH:
for ($i=0;$#liste1;$i++)RICHTIG:
for ($i=0;i<$liste1;$i++)jep, da war der Fuchs begraben, schon blöd wenn man nichtmal ne for-schleife richtig zusammenbekommt*Asche übers haupt*....jetzt funzt es jedenfalls....:)
Noch einfacher geht es mit Slices:
my %hash; @hash{@keys} = @values;
Gruß Alex
Hi!
Noch einfacher geht es mit Slices:
my %hash; @hash{@keys} = @values;
Gruß Alex
GENAU DANACH hab ich gesucht!!!! DANKE, jetzt kann ich mir nämlich die hässliche for-schleife sparen....:)
greez
Stefan
Hi,
RICHTIG:
for ($i=0;i<$liste1;$i++)
BESSER:
for (my $i=0; $i<scalar @liste1; $i++)
;-)
Cheatah