en Perl, comment faire du hasch de tableaux @a code> et
@b code> ayant un nombre égal d'éléments? L'objectif est d'avoir chaque valeur de
@a code> comme clé pour valoriser dans
@b code>. Le hash résultant
% c code> permettrait ensuite d'identifier de manière unique un élément de
@b code> de la clé d'alimentation de
@a code>. P>
4 Réponses :
Si je comprends le problème correctement:
my %c; $c{$a[$_]} = $b[$_] for (0 .. @a-1);
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
A sont les clés, B est les valeurs de hachage c: gardez à l'esprit qu'il ne doit pas y avoir de valeurs en double dans la matrice A. P> P> P> >
my %c = map { $a[$_] => $b[$_] } 0 .. $#a;
Nice, je n'avais pas pensé à utiliser la carte.
Ou roulez votre propre: sous maillage {@_ [MAP $ _ & 1? $ _ >> 1: ($ _ >> 1) + ($ # _ >> 1), 1 .. @ _]} code>
C'est aussi simple que
my %c; @c{@a} = @b;
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 i> montre cela dans la section des tranches. :)