8
votes

Comment puis-je créer un hasch Perl d'un tableau avec les clés et un autre tableau avec les valeurs?

en Perl, comment faire du hasch de tableaux @a et @b ayant un nombre égal d'éléments? L'objectif est d'avoir chaque valeur de @a comme clé pour valoriser dans @b . Le hash résultant % c permettrait ensuite d'identifier de manière unique un élément de @b de la clé d'alimentation de @a .


0 commentaires

4 Réponses :


2
votes

Si je comprends le problème correctement:

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


2 commentaires

J'aime beaucoup Perl, mais parfois, on peut désespérer un langage de programmation vous permettant des caractères plus de caractères autres que des lettres de votre code source ...


@Boldewyn: généralement fixé en utilisant des noms de variables réels



0
votes

A sont les clés, B est les valeurs de hachage c: xxx

gardez à l'esprit qu'il ne doit pas y avoir de valeurs en double dans la matrice A. >


0 commentaires

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

2 commentaires

Nice, je n'avais pas pensé à utiliser la carte.


Ou roulez votre propre: sous maillage {@_ [MAP $ _ & 1? $ _ >> 1: ($ _ >> 1) + ($ # _ >> 1), 1 .. @ _]}



23
votes

C'est aussi simple que

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


2 commentaires

Super! J'ai oublié la solution de tranche, bien que je l'utilise régulièrement.


Vous lisez probablement les mauvais livres. L'apprentissage Perl montre cela dans la section des tranches. :)