Bonjour,
J'aimerais trier mon tableau en fonction de ses valeurs (qui sont numériques) et que ce soit décroissant et non croissant.
J'arrive facilement à le trier en fonction de ses clés en utilisant sort.
Le problème est que j'ai plusieurs valeurs identiques. Comment pourrais-je faire?
J'obtiens
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 foreach my $key (sort keys %TagsDifferents) { print $key."\t\t nb = ".$TagsDifferents{$key}."\n"; print $OutFile ($key."\t\t nb = ".$TagsDifferents{$key}."\n"); } my @Tri = sort values %TagsDifferents; foreach (@Tri) { print $_."\n"; }
PCR_primers nb = 3
collected_by nb = 3
collection_date nb = 3
db_xref nb = 4
isolate nb = 3
map nb = 3
mol_type nb = 4
note nb = 2
organism nb = 4
strain nb = 1
1
2
3
3
3
3
3
4
4
4
Comment pourrais-je faire afin d'avoir les clés associées à ces valeurs triées ainsi que pour avoir un tri croissant?
Merci,
Jasmine,
ca va, j'ai trouvé la solution.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 my @fields = sort { $TagsDifferents{$a} <=> $TagsDifferents{$b} } keys %TagsDifferents; @fields = reverse(@fields); foreach (@fields) { print $_."\t\t".$TagsDifferents{$_}."\n"; }Au cas où ça pourrait aider quelqu'un ayant un problème similaire.my @fields = sort { $TagsDifferents{$a} <=> $TagsDifferents{$b} } keys %TagsDifferents;
@fields = reverse(@fields);
foreach (@fields)
{
print $_."\t\t".$TagsDifferents{$_}."\n";
}
Jasmine,
Partager