Somme de mots en répétition

Somme de mots en répétition - Perl - Programmation

Marsh Posté le 15-09-2016 à 21:56:54    

Bonsoir
J ai une liste de mots en ordre alphabétique, où il y a de mots qui sont répétés
Et je dois afficher une nouvelle liste où les mots répétés sont accompagnés du nombre de fois de répétition, par ex dans la première liste il y a  :  
 
Jean
Jean
Johan
John
John
John
 
Du coup il faut que la nouvelle liste soit :  
 
Jean 2
Johan
John 3
 
Comment je peux compter les répétitions ?  
 
Merci en avance !  

Reply

Marsh Posté le 15-09-2016 à 21:56:54   

Reply

Marsh Posté le 16-09-2016 à 11:50:20    

C'est la base de la base des hash perl, ça.
Ca doit ressembler à ceci (pas le temps de tester)
%myhash;
foreach (@mylist) {
  $myhash{$_}++;
}
(ou $myhash{$_}++ foreach (@mylist); si tu préfères tout sur une ligne.)
Tu crées un hash, et pour chaque valeur de ta liste, tu incrémentes l'élément du hash de clé cette valeur.
A la fin, le hash a pour clés les mots distincts de ta liste, et pour valeur associée à une clé le nombre de fois que le mot (ie la clé) est dans la liste.
 
EDIT:
J'ai trouvé 2mn pour tester

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my @list = qw(toto tutu tata tutu titi toto toto toto tata);
  6. my %hash;
  7. foreach (@list) {
  8.     $hash{$_}++;
  9. }
  10. foreach (sort(keys %hash)) {
  11.     print "$_ $hash{$_}\n";
  12. }


C:\PerlDev>perl answer1.pl
tata 2
titi 1
toto 4
tutu 2


 
A+,


Message édité par gilou le 16-09-2016 à 12:05:48

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 16-09-2016 à 13:17:56    

merci beaucoup!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed