problème de triage et répétition dans un dict
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

problème de triage et répétition dans un dict



  1. #1
    gthy

    problème de triage et répétition dans un dict


    ------

    bonjour,
    l'énoncé:
    Écrire une fonction words_by_length(fileName) qui prend en paramètre le nom, sous forme d’une chaîne de caractères, d’un fichier texte, et qui renvoie un dictionnaire associant à une longueur l la liste triée (dans l’ordre utf-8 croissant) des mots de longueur l présents dans le texte contenu dans le fichier. Ces mots seront écrits en minuscules.

    mon code:

    Code:
    f = open(file)
    contenu = f.read().strip()
    a = contenu.lower()
    s = {}
    for mot in re.split("[-? ,.'()]+", a):
        s.setdefault(len(mot),[]).append(mot)
    print(s)
    mon problème est que je n'arrives pas a éliminer les répétions dans la liste associé à les clefs de mon dictionnaire , comme je n'arrive pas à trier
    ca me ferais plaisir si vous m'aidez un peu

    -----

  2. #2
    umfred

    Re : problème de triage et répétition dans un dict

    pourquoi vouloir éliminer les répétions de mots ?
    Sinon plutôt qu'utiliser une liste, utiliser ou passer par un set pour éviter les mots en doubles avant de remettre dans une liste.
    Après, les listes disposent d'une méthode sort()
    PS on demande une fonction, il n'y a pas sa définition ni son retour (mais peut-être que tu avais prévu de les rajouter ensuite)

  3. #3
    gthy

    Re : problème de triage et répétition dans un dict

    ok merci je vais essayer
    Dernière modification par gthy ; 09/11/2022 à 12h27.

  4. #4
    gthy

    Re : problème de triage et répétition dans un dict

    est ce que c'est possible de passer par set() et puis remettre que les values dans une liste ?

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : problème de triage et répétition dans un dict

    c'est ce que je suggère dans ma réponse
     Cliquez pour afficher

  7. #6
    polo974

    Re : problème de triage et répétition dans un dict

    plus simple de faire un seul set au départ:

    Code:
    set(re.split("[-? ,.'()]+", a))
    ensuite, on peut pinailler sur le regex et éviter la chaîne vide.
    Code:
    set([m for m in re.split("[_\d\W]+", txt) if m])
     Cliquez pour afficher
    Jusqu'ici tout va bien...

Discussions similaires

  1. '<' not supported between instances of 'dict' and 'str'
    Par invitecff8806c dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 21/03/2019, 19h06
  2. Triage d'accumulateur
    Par invite80b73304 dans le forum Électronique
    Réponses: 1
    Dernier message: 15/12/2007, 16h12