C'est un problème a priori facile et j'ai une solution mais je la
trouve un peu lourde ...
Il y a un hash : %dico
une liste qui contient des mots : @ligne (lecture ligne à ligne d'un
fichier)
Je veux : une liste @def qui contient les indices des éléments de
@ligne qui sont dans (keys %dico)
Comme ça je peux obtenir : @dico{@ligne[@def]}
Je ne suis pas sur qu'utiliser des slices comme ça soit très bon au
niveau performance.
Le but de la manip c'est de traduire (d'ou la variable %dico ...) des
mots d'une chaîne par d'autres, en gardant le sens d'apparition dans
la chaîne et en éliminant ceux qui ne sont pas definis dans le dico.
J'ai besoin de @def par la suite car les mots que je traduit
définissent des colonnes et je ne veux garder que les colonnes
correspondant à une entête définie.
J'ai retrouvé cette technique dans le cookbook mais j'ai l'impression
qu'il y a un autre moyen ? Comme : Trouver instantanément les indices
de @ligne dans keys %dico ..
Merci d'avance pour votre aide et|ou vos conseils .
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Wacrenier
aarg écrit:
Il y a un hash : %dico une liste qui contient des mots : @ligne (lecture ligne à ligne d'un fichier) Je veux : une liste @def qui contient les indices des éléments de @ligne qui sont dans (keys %dico) Comme ça je peux obtenir : @dico{@ligne[@def]}
Quelque chose comme ça :
@def = grep { defined $dico{$_} } @ligne;
aarg <dcd@noos.fr> écrit:
Il y a un hash : %dico
une liste qui contient des mots : @ligne (lecture ligne à ligne d'un
fichier)
Je veux : une liste @def qui contient les indices des éléments de
@ligne qui sont dans (keys %dico)
Comme ça je peux obtenir : @dico{@ligne[@def]}
Il y a un hash : %dico une liste qui contient des mots : @ligne (lecture ligne à ligne d'un fichier) Je veux : une liste @def qui contient les indices des éléments de @ligne qui sont dans (keys %dico) Comme ça je peux obtenir : @dico{@ligne[@def]}
Quelque chose comme ça :
@def = grep { defined $dico{$_} } @ligne;
dcd
Bonjour ,
Quelque chose comme ça :
@def = grep { defined $dico{$_} } @ligne;
ahh oui c'est bien ! Mais ca ne me renvoie que les elements de @lignes et pas leurs indices ...
Y a t-il un moyen d'obtenir une liste (@def) contenant les incices des elements d'une liste (@ligne) dans une autre liste (keys %dico) ?
ou bien, si je passe par votre commande, je cherche les indices des elements de @def dans @ligne.
Merci de vos conseils
Bonjour ,
Quelque chose comme ça :
@def = grep { defined $dico{$_} } @ligne;
ahh oui c'est bien ! Mais ca ne me renvoie que les elements de @lignes
et pas leurs indices ...
Y a t-il un moyen d'obtenir une liste (@def) contenant les incices des
elements d'une liste (@ligne) dans une autre liste (keys %dico) ?
ou bien, si je passe par votre commande, je cherche les indices des
elements de @def dans @ligne.