Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    sort di chiavi di un hash

    codice:
    #!/perl
    
    my %hash = ();
    for(0..10) {
       $hash{$_} = rand(1000);
    }
    
    foreach my $k ( sort {$hash{$a} <=> $hash{$b}} keys %hash )
    {
    
    print "$k $hash{$k}\n";
    
    }
    questo codice mi ordina le chiavi in base ai valori associati ad esse .. io vorrei ordinare le chiavi in base alle chiavi: quindi $hash{0} , $hash{1} , $hash{2} etc...

    grazie

  2. #2
    premetto che non ho mai lavorato con la funzione sort, quindi firmo il foglio che non mi assumo responsabilità.

    codice:
    foreach my $k (sort {$a<=>$b} keys %hash ) {
    	print "$k $hash{$k}\n";
    }
    keys restituisce la lista delle chiavi.
    La lista viene passata al sort che tramite il blocco li considera numeri. Se togli il blocco vedi che il 10 vieni subito dopo il numero 1 perchè fa l'ordine considerandola una stringa.
    Sort ritorna la lista degli indici ordinato in modo crescente.

    foreach ritorna le chiavi uno ad uno.

    Ciao

  3. #3
    e per quale motivo se devi usare come indice numeri da 0 a 10 non usi un array invece che un hash?
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

  4. #4
    Perchè il mio era un piccolo esempio di una situazione un pò più complicata.

    grazie lord

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.