IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[tableau]supprimer doublons ou ne pas les ecrire


Sujet :

Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2019
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2019
    Messages : 35
    Points : 23
    Points
    23
    Par défaut [tableau]supprimer doublons ou ne pas les ecrire
    Bonjour,

    Pour plusieurs phrases donnés, pour chaque mot de de chaque phrase, je dois indiquer il y a combien de mots avec une longueur de x, une longueur de x+1 etc

    J'ai pensé donc à faire un tableau où je note les longueur de chaque mot pour une phrase donné, mais évidement, il y a des mots de même longueur, je veux donc éviter de réécrire la même longueur dans une autre case de tableau, mais incrémenter une valeur a chaque fois où j'ai un mot qui à la même longueur trouvé.

    J'espère que je me fais comprendre,

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 351
    Points : 36 875
    Points
    36 875
    Par défaut
    Salut,

    Si vous ne postez pas un peu de code, on ne va pas savoir sur quelles difficultés vous butez et comme on ne sait pas quel sous ensemble de Python vous avez appris pour coder çà....

    - W

  3. #3
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 038
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 038
    Points : 8 405
    Points
    8 405
    Par défaut
    salut,

    Citation Envoyé par Gioge Voir le message
    Pour plusieurs phrases donnés, pour chaque mot de de chaque phrase, je dois indiquer il y a combien de mots avec une longueur de x, une longueur de x+1 etc
    J'ai pensé donc à faire un tableau où je note les longueur de chaque mot (...)
    il faut découper le problème en 2 parties; dans un premier temps on va créer un dictionnaire (tableau associatif) avec en guise de clé la longueur des mots et en valeurs le nombre de mots qui ont cette longueur, et dans un second temps on va à nouveau parcourir les phrases/mots et afficher au fur et à mesure pour chaque mot le nombre voulu en piochant dans le dictionnaire.

    exemple, si on voit passer "bonjour" c'est un mot de 7 lettre, dico[7]* doit alors nous donner le nombre de mots qui ont une longueur de 7 caractères

    * à noter qu'il ne s'agit pas du "7ème élément du dictionnaire", il s'agit de "l'élément du dictionnaire dont la clé a pour nom 7", c'est le principe des tableaux associatifs

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 721
    Points : 31 044
    Points
    31 044
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par Gioge Voir le message
    J'ai pensé donc à faire un tableau où je note les longueur de chaque mot pour une phrase donné, mais évidement, il y a des mots de même longueur, je veux donc éviter de réécrire la même longueur dans une autre case de tableau, mais incrémenter une valeur a chaque fois où j'ai un mot qui à la même longueur trouvé.
    Le dictionnaire de BufferBob est une bonne idée.

    Grosso-modo ce serait un truc de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    pour chaque mot faire
        lg=longueur(mot)
        si lg existe pas dans dico, alors
            dico[lg]=ensemble_vide
        fin si
        ajouter mot dans dico[lg]
    fin pour
    Au final chaque clef du dico contiendra tous les mots ayant cette longueur. Et le fait d'utiliser un ensemble aura pour résultat que les mots en doubles n'apparaitront qu'une fois.

  5. #5
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 302
    Points : 6 782
    Points
    6 782
    Par défaut
    Salut,

    À la façon d'un histogramme c'est bon aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    >>> p = "J'ai pensé donc à faire un tableau où je note les longueur de chaque mot pour une phrase donné, mais évidement, il y a des mots de même longueur, je veux donc éviter de réécrire la même longueur dans une autre case de tableau, mais incrémenter une valeur a chaque fois où j'ai un mot qui à la même longueur trouvé".split(" ")
    >>> l = [0] * (len(max(p, key=len)) + 1)
    >>> for i in p:
    ...     l[len(i)] += 1
    ...
    >>> for idx, e in enumerate(l):
    ...     print("Mots de %s lettres: %s" %(idx, e))
    ... 
    Mots de 0 lettres: 0
    Mots de 1 lettres: 5
    Mots de 2 lettres: 13
    Mots de 3 lettres: 8
    Mots de 4 lettres: 16
    Mots de 5 lettres: 3
    Mots de 6 lettres: 7
    Mots de 7 lettres: 1
    Mots de 8 lettres: 5
    Mots de 9 lettres: 1
    Mots de 10 lettres: 1
    Mots de 11 lettres: 1
    >>> # vérification
    >>> len(p) == sum(l)
    True
    >>>

  6. #6
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Points : 704
    Points
    704
    Par défaut
    Voici une solution parmi tant d'autre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
    >>> d = {}
    >>> for w in s.split():
    	d[len(w)] = d.get(len(w), 0) + 1
     
    >>> d
    {5: 12, 3: 5, 11: 1, 10: 3, 2: 13, 7: 10, 6: 7, 4: 9, 12: 1, 13: 1, 9: 5, 8: 2}
    ou encore plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> import collections
    >>> s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
    >>> collections.Counter(len(w) for w in s.split())
    Counter({2: 13, 5: 12, 7: 10, 4: 9, 6: 7, 3: 5, 9: 5, 10: 3, 8: 2, 11: 1, 12: 1, 13: 1})

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 906
    Points : 7 273
    Points
    7 273
    Par défaut
    Bonjour,

    @flapili,

    Le nombre de lettres est trompé par les ponctuations...

    Il faudrait déjà faire un traitement avant,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    from string import punctuation
     
    s = "..."
    s = s.translate(str.maketrans('', '', punctuation))
    @Gioge,

    supprimer doublons ou ne pas les ecrire
    Le titre n'est pas clair, et dans ton post, rien n'indique l'objectif précisément. Tu n'indiques qu'une solution à un problème (qu'on ne connaît pas).
    Par exemple si l'objectif était de supprimer les doublons de mots dans un texte, alors les solutions proposées seraient incorrectes ou inadaptées.

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/04/2019, 14h20
  2. TIBTransaction.Rollback ne supprime pas les objets créés dans le script
    Par sangkookay dans le forum Connexion aux bases de données
    Réponses: 2
    Dernier message: 02/10/2007, 14h26
  3. [Requete] qui n'affiche pas les doublons mais sur un seul champs
    Par joseph.breham dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/12/2006, 14h57
  4. [9i] Supprimer les histogrammes mais pas les stats
    Par orafrance dans le forum Oracle
    Réponses: 4
    Dernier message: 21/08/2006, 08h13
  5. RMAN / DELETE OBSOLETE ne supprime pas les fichiers
    Par segphault dans le forum Recovery Manager
    Réponses: 3
    Dernier message: 12/04/2006, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo