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. :)