• Publicidad

Eliminación en lista asociativa

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Eliminación en lista asociativa

Notapor charlygarza » 2013-05-21 22:30 @979

Buenas, necesito su ayuda con este problema:

Quisiera realizar la eliminación dentro de una lista asociativa pero sin hacerlo de forma manual tal y como está ahora en mi código, sino por medio de algún for() o si existe otra forma. De la lista se eliminan los datos uno, tres y siete; se tiene que mostrar la lista antes de la eliminación, los números a eliminar y la lista después de la eliminación.

#!/usr/bin/perl
%datos = ("UNO", 1, "DOS", 2, "TRES", 3,"CUATRO", 4,"CINCO", 5,"SEIS", 6,"SIETE", 7,"OCHO", 8,"NUEVE", 9,"DIEZ", 10,"ONCE", 11,"DOCE", 12);

print "LISTA ASOCIATIVA ANTES DE LA ELIMINACIÓN \n";

print "$datos{'UNO'}, $datos{'DOS'}, $datos{'TRES'}, $datos{'CUATRO'}, $datos{'CINCO'}, $datos{'SEIS'} " ;
print "$datos{'SIETE'}, $datos{'OCHO'}, $datos{'NUEVE'}, $datos{'DIEZ'}, $datos{'ONCE'}, $datos{'DOCE'} \n" ;

print "LISTA NÚMEROS A ELIMINAR \n";
print "$datos{'UNO'},$datos{'TRES'},$datos{'SIETE'}";
delete $datos{'UNO'},$datos{'TRES'},$datos{'SIETE'};

print "\nLISTA CON DATOS ELIMINADOS \n";
print "$datos{'DOS'}, $datos{'CUATRO'}, $datos{'CINCO'}, $datos{'SEIS'} " ;
print " $datos{'OCHO'}, $datos{'NUEVE'}, $datos{'DIEZ'}, $datos{'ONCE'}, $datos{'DOCE'} \n" ;
charlygarza
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2013-05-11 13:22 @598

Publicidad

Re: Eliminación en lista asociativa

Notapor explorer » 2013-05-22 02:45 @156

Tienes algún ejemplo en perldoc -f delete
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use feature 'say';
  3.  
  4. %datos = (
  5.     UNO    => 1,
  6.     DOS    => 2,
  7.     TRES   => 3,
  8.     CUATRO => 4,
  9.     CINCO  => 5,
  10.     SEIS   => 6,
  11.     SIETE  => 7,
  12.     OCHO   => 8,
  13.     NUEVE  => 9,
  14.     DIEZ   => 10,
  15.     ONCE   => 11,
  16.     DOCE   => 12,
  17. );
  18.  
  19. say "LISTA ASOCIATIVA ANTES DE LA ELIMINACIÓN";
  20. while(($clave, $valor) = each(%datos)) {
  21.     printf("%6s => %s\n", $clave, $valor);
  22. }
  23.  
  24. print "LISTA NÚMEROS A ELIMINAR \n";
  25. my @a_borrar = qw( UNO TRES SIETE );
  26.  
  27. print join(',', @datos{@a_borrar}), "\n";
  28.  
  29. for $c (@a_borrar) {                      # este bucle es lo mismo que escribir delete @datos{@a_borrar};
  30.     delete $datos{$c};
  31. }
  32.  
  33. say "LISTA CON DATOS ELIMINADOS";
  34. while(($clave, $valor) = each(%datos)) {
  35.     printf("%6s => %s\n", $clave, $valor);
  36. }
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4

Sale:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
LISTA ASOCIATIVA ANTES DE LA ELIMINACIÓN
  TRES => 3
  OCHO => 8
 CINCO => 5
  DOCE => 12
  ONCE => 11
  DIEZ => 10
 SIETE => 7
CUATRO => 4
  SEIS => 6
   UNO => 1
   DOS => 2
 NUEVE => 9
LISTA NÚMEROS A ELIMINAR
1,3,7
LISTA CON DATOS ELIMINADOS
  OCHO => 8
 CINCO => 5
  DOCE => 12
  ONCE => 11
  DIEZ => 10
CUATRO => 4
  SEIS => 6
   DOS => 2
 NUEVE => 9
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Eliminación en lista asociativa

Notapor charlygarza » 2013-05-22 09:42 @446

Muchas gracias. :D Justo la respuesta que esperaba.
charlygarza
Perlero nuevo
Perlero nuevo
 
Mensajes: 26
Registrado: 2013-05-11 13:22 @598


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 16 invitados