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 :

Dictionnaire à partir d'une liste de mots


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 165
    Points : 0
    Points
    0
    Par défaut Dictionnaire à partir d'une liste de mots
    Bonjour,

    Je souhaite réaliser un dictionnaire en Python, avec des clés nommées liste_n où n est la variable d'une boucle pour, qui l'incrémente de 1. Ensuite je souhaite ajouter les mots de longueurs n dans cette liste_n or, la fonction append ne fonctionne pas... Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    liste = ['la', 'premiere', 'punition', 'de', 'ces', 'jalouses']
    dico = {}
    n = 1
    for n in range (25):
        for k in range (len(liste)):
            if len(liste[k]) == n :
                dico["liste_%i"%n] = ''
                dico["liste_%i"%n].append(liste[k])
    print(dico)
    J'ai également testé la fonction .join, mais j'obtiens ce résultat : {'liste_2': ' ', 'liste_3': ' ', 'liste_8': ' '}

    Donc j'ai bien la création des listes, mais les mots de la liste "liste" ne s'ajoutent pas dans les liste_n ...

    Merci de votre lecture et de votre aide.

  2. #2
    Expert éminent

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

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

    Les strings n'ont pas de méthode append.

    Donc, si je comprend bien, tu crées une boucle sur le nombre maximum possibles de caractères des mots pour vérifier ensuite si chaque mot entre dans cette catégorie de longeur.
    Pas très rationnel, ça.

    Soyons plus simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    liste = ['la', 'premiere', 'punition', 'de', 'ces', 'jalouses']
    dico = {}
    for mot in liste:
        key = 'liste_%i' % len(mot)
        if key in dico:
            dico[key].append(mot)
        else:
            dico[key] = [mot]
    print dico

  3. #3
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 804
    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 804
    Points : 7 080
    Points
    7 080
    Par défaut
    Le principe est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> res = dict(('liste{}'.format(i), []) for i in range(5))
    >>> res
    {'liste0': [], 'liste4': [], 'liste2': [], 'liste3': [], 'liste1': []}
    >>> res['liste1'].append(1)
    >>> res
    {'liste0': [], 'liste4': [], 'liste2': [], 'liste3': [], 'liste1': [1]}
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    C'est exactement ça, merci beaucoup !

    Mais je vois que print(dico) génère les liste_n aléatoirement, c'est sans importance mais est-il possible de les afficher par ordre croissant ? liste_1, liste_2, liste...

    Merci encore de votre réponse rapide et efficace.

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 804
    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 804
    Points : 7 080
    Points
    7 080
    Par défaut
    c'est sans importance mais est-il possible de les afficher par ordre croissant ?
    On peut mais si c'est sans importance ? Pour faire simple on peut faire ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> for key in sorted(res.keys()):
    ...     print(key)
    ... 
    liste0
    liste1
    liste2
    liste3
    liste4
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2013
    Messages : 165
    Points : 0
    Points
    0
    Par défaut
    Ok merci beaucoup !

    Deuxième souci, afin de ne pas ouvrir un deuxième topic pour ça...

    Comment prendre un mot aléatoirement d'un liste en connaissant son indice n ?

    Merci encore !

  7. #7
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 804
    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 804
    Points : 7 080
    Points
    7 080
    Par défaut
    Toujours à l'aide de l'interpréteur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> res = {'liste0': [], 'liste4': [], 'liste2': [], 'liste3': [], 'liste1': []}
    >>> from random import choice
    >>> randomKeys = choice(list(res.keys()))
    >>> randomKeys
    'liste2'
    >>> res[randomKeys]
    []

    1. choice pour choisir aléatoirement dans une liste
    2. keys pour avoir la liste des clés du dictionnaire
    3. Appel à list, pour avoir un objet list utilisable par la fonction choice
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer une table à partir d'une liste de mots
    Par bytecode dans le forum Requêtes
    Réponses: 0
    Dernier message: 01/01/2014, 12h23
  2. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  3. Créer un dictionnaire à partir d'une liste
    Par jouclar dans le forum Général Python
    Réponses: 7
    Dernier message: 25/04/2012, 22h09
  4. [WD-2007] A partir d'une liste de mots, gerer la mise en forme et les infobulles
    Par Nilaina dans le forum VBA Word
    Réponses: 24
    Dernier message: 17/12/2011, 15h12
  5. Réponses: 5
    Dernier message: 07/05/2007, 08h16

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