8 Stimmen

Wie kann ich aus einem Array mit den Schlüsseln und einem anderen Array mit den Werten ein Perl-Hash erstellen?

In Perl, wie erstelle ich einen Hash aus den Arrays @A und @B, die die gleiche Anzahl von Elementen haben? Das Ziel ist es, jeden Wert von @A als Schlüssel zum Wert in @B zu haben. Der resultierende Hash %C würde es dann ermöglichen, ein Element aus @B eindeutig zu identifizieren, indem der Schlüssel aus @A bereitgestellt wird.

23voto

newacct Punkte 114757

Es ist so einfach wie

my %c;
@c{@a} = @b;

8voto

codeholic Punkte 5471
Verwenden Sie List::MoreUtils 'mesh';
my %c = mesh @a, @b;

So wird es intern erstellt (wenn Sie sich über die gleiche Anzahl von Elementen sicher sind):

my %c = map { $a[$_] => $b[$_] } 0 .. $#a;

2voto

Hans W Punkte 3791

Wenn ich das Problem richtig verstehe:

my %c;
$c{$a[$_]} = $b[$_] for (0 .. @a-1);

0voto

toolic Punkte 51826

A's sind die Schlüssel, B's sind die Werte des Hashes C:

use strict;
use warnings;

my @a = 1 .. 3;
my @b = 4 .. 6;
my %c;
for (0 .. $#a) {
    $c{$a[$_]} = $b[$_]
}

Denken Sie daran, dass es keine doppelten Werte im A-Array geben darf.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X