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 :

trier un dictionnaire


Sujet :

Python

  1. #1
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    130
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par d�faut trier un dictionnaire
    Bonjour.
    J'utilise python, mais je suis d�butante.

    Svp, j'ai un dictionnaire, je veux le trier
    Est ce que c'est vrai que c'est impossible de le faire directement, et je dois pass� par une liste ou tableau.

    Merci pour tout aide.

  2. #2
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    130
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par d�faut
    j'ai oubli� un petit d�tail,
    je veux trier le dictionnaire par ordre croissants des valeurs.
    Ex: dic= {'xxxx': 24, yyyyy': 7, 'zzzzzz': 1}
    Je veux qu'il affiche {'zzzzzz': 1, yyyyy': 7,'xxxx': 24}

    Merci

  3. #3
    Expert confirm�
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 108
    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 : 4 108
    Par d�faut
    Je ne suis pas sur mais il ne me semble pas que cela soit possible

    Sinon tu peux transformer ton dico en liste

    Exemple :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> dic
    {24: 'xxxx', 1: 'zzzzzz', 7: 'yyyyy'}
    >>> dic.items() #transforme ton dico en type list, tu pourras donc trier
    [(24, 'xxxx'), (1, 'zzzzzz'), (7, 'yyyyy')] #le resultat pour que tu comprennes
    >>> list=dic.items() #j'affecte à une variable le resultat
    >>> list.sort() #tri de la liste
    >>> list #affichage de la liste
    [(1, 'zzzzzz'), (7, 'yyyyy'), (24, 'xxxx')]

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par d�faut
    Effectivement, il n'est pas possible de trier un dictionnaire.
    Pour trier par valeur, plut�t que par cl�:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> dic ={'xxxx': 24, 'yyyyy': 7, 'zzzzzz': 1}
    >>> from operator import itemgetter
    >>> l = dic.items()
    >>> l.sort(key=itemgetter(1))
    >>> l
    [('zzzzzz', 1), ('yyyyy', 7), ('xxxx', 24)]
    >>> #ou en une ligne:
    >>> sorted(dic.items(),key=itemgetter(1))
    [('zzzzzz', 1), ('yyyyy', 7), ('xxxx', 24)]

  5. #5
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    130
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par d�faut
    Grand merci.
    �a marche tr�s bien.
    Et si je veux tri� on ordre d�croissant j'utilise quelle fonction?

  6. #6
    Membre confirm�
    Inscrit en
    Mars 2008
    Messages
    130
    D�tails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 130
    Par d�faut
    J'ai trouv�, il faut modifi� l'instruction comme ceci :
    l.sort(key=itemgetter(1),reverse=True)
    Merci

  7. #7
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut
    Quelque chose comme cela devrait convenir (si le but est uniquement de faire de l'affichage):
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    for key in reversed(sorted(dic)):
    	print "%s: %d" % (key, dic[key])
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Trier un dictionnaire de tuples
    Par a1331 dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 02/07/2013, 13h53
  2. [D�butant] Trier un dictionnaire
    Par renovatio34 dans le forum C#
    R�ponses: 6
    Dernier message: 08/05/2012, 20h13
  3. Trier donn�es sous forme de dictionnaire dans un fichier
    Par pinard dans le forum G�n�ral Python
    R�ponses: 3
    Dernier message: 17/11/2011, 17h37
  4. [XNA]Trier les valeurs d'un dictionnaire
    Par avogadro dans le forum C#
    R�ponses: 8
    Dernier message: 17/03/2010, 16h24
  5. trier un dictionnaire
    Par ekremyilmaz dans le forum G�n�ral Python
    R�ponses: 5
    Dernier message: 16/10/2008, 20h29

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