Как я могу сделать хэш Perl из массива с ключами и другого массива со значениями? - PullRequest
8 голосов
/ 21 февраля 2010

В Perl, как сделать хэш из массивов @A и @B, имеющих одинаковое количество элементов? Цель состоит в том, чтобы каждое значение @A было ключом к значению в @B. Результирующий хеш %C позволит затем однозначно идентифицировать элемент из @B, предоставляя ключ из @A.

Ответы [ 4 ]

23 голосов
/ 21 февраля 2010

это так же просто, как

my %c;
@c{@a} = @b;
8 голосов
/ 21 февраля 2010
use List::MoreUtils 'mesh';
my %c = mesh @a, @b;

Вот как это делается внутри (если вы уверены в равном количестве элементов):

my %c = map { $a[$_] => $b[$_] } 0 .. $#a;
2 голосов
/ 21 февраля 2010

Если я правильно понимаю проблему:

my %c;
$c{$a[$_]} = $b[$_] for (0 .. @a-1);
0 голосов
/ 21 февраля 2010

A - это ключи, B - значения хэша C:

use strict;
use warnings;

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

Имейте в виду, что в массиве A не должно быть повторяющихся значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...