¿Cómo agrego hash a hash b en Perl sin usar un bucle?¿Cómo puedo unir dos hashes en Perl sin usar un bucle?
Respuesta
Si se refiere a tomar la unión de sus datos, simplemente:
%c = (%a, %b);
¿Por qué no% a = (% a,% b); ¿trabajo? % a se "borra" – biznez
Funciona para mí: "% a = ('a' => 'b', 'c' => 1);% b = ('c' => 'd');% a = (% a,% b); print join (',', map {"'$ _' => \" $ {a {$ _}} \ ""} teclas% a), "\ n"; " Los elementos de% b con la misma clave tienen prioridad, pero otros elementos de% a están presentes después de la unión. – outis
@yskhoo: funciona. – ysth
También puede utilizar rebanadas de fusionar uno de hash a la otra;
@a{keys %b} = values %b;
Tenga en cuenta que los elementos de% b se sobrescribir elementos en% a que tienen la misma clave.
Para obtener crédito adicional, con una referencia de hash en ayb, hacemos @ {$ a} {claves% $ b} = valores% $ b; – daotoad
Espero que esto sea más eficiente que la otra respuesta, porque esa recrea el hash también para los elementos ya existentes, mientras que este solo agrega claves para los nuevos elementos. Si hubo muchos elementos en% a, en comparación con% b, la diferencia puede ser respetable. – bart
Quizás. Mi enfoque también camina% b dos veces. Si% b es mayor que% a, la otra técnica podría ser más rápida. El más rápido de todos podría ser un bucle, pero el OP no quería eso. – outis
Esto combinará hashes y también tendrá en cuenta las entradas no definidas, por lo que no reemplazan el contenido.
my %hash = merge(\%hash1, \%hash2, \%hash3);
sub merge {
my %result;
%result = %{ $_[0] };
shift;
foreach my $ref (@_) {
for my $key (keys %{$ref}) {
if (defined $ref->{$key}) {
$result{$key} = $ref->{$key};
}
}
}
return %result;
}
my %c = %a;
map {$c{$_} = $b{$_}} keys %b;
- 1. ¿Cómo comparo dos hashes en Perl sin usar Data :: Compare?
- 2. ¿Cómo puedo combinar varios hashes en un hash en Perl?
- 3. ¿Cómo puedo filtrar una matriz sin usar un bucle en Perl?
- 4. Incluyendo Hashes dentro de Hashes en Perl
- 5. ¿Cómo puedo unir dos caminos en C#?
- 6. ¿Cómo puedo usar los hashes como argumentos para las subrutinas en Perl?
- 7. ¿Cómo comparo dos hashes?
- 8. ¿Cómo combinar dos diccionarios sin bucle?
- 9. MySQL - ¿Unir dos tablas sin duplicados?
- 10. ¿Cómo puedo distinguir dos archivos en Perl?
- 11. Las referencias en Perl: Arsenal de hashes
- 12. ¿Cómo puedo usar los hashes como argumentos para las subrutinas en Perl?
- 13. ¿Cómo creo un hash de hashes en Perl?
- 14. ¿Cómo salgo de un bucle en Perl?
- 15. ¿Cómo puedo unir direcciones IPv6 con una Perl Regex?
- 16. ¿Puede BerkeleyDB en perl manejar un hash de hashes de hashes (hasta n)?
- 17. Unir dos líneas en vim sin mover el cursor
- 18. ¿Cómo puedo unir internamente dos archivos csv en R?
- 19. ¿Cómo puedo instalar el módulo Perl sin usar CPAN.pm?
- 20. ¿Cómo inicializo los valores en un hash sin bucle?
- 21. ¿Vías principales sin hashes?
- 22. ¿Cómo iterar a través de hash (de Hashes) en Perl?
- 23. ¿Cómo puedo manejar el bucle anidado sin anidar las instrucciones foreach en Perl?
- 24. Unir dos subconsulta en MySQL
- 25. ¿Cómo puedo usar __DATA__ dos veces?
- 26. ¿Cómo puedo restablecer un hash por completo sin usar un bucle for?
- 27. XCode: ¿Cómo unir dos líneas?
- 28. ¿Cómo rompo un bucle externo de uno interno en Perl?
- 29. ¿Cómo puedo unir cadenas que no coinciden con un patrón particular en Perl?
- 30. Hashes of Array en Perl: recorrido y borrado
¿Por qué no quieren usar un bucle? –