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 :

Garder le même ordre d'insertion d'un dictionnaire


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 20
    Points : 6
    Points
    6
    Par défaut Garder le même ordre d'insertion d'un dictionnaire
    Bonjour à tous,

    J'ai cette liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste = {"Nom":nom, "Prenom": prenom, "Age": age,"Adresse": Adresse}
    Quand je fais un print (liste), il m'affiche a chaque fois la liste aléatoirement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "Adresse": Adresse,"Age": age, "Nom":nom, "Prenom": prenom
    "Age": age,"Prenom": prenom,"Adresse": Adresse,"Nom":nom
    etc..
    J'ai Python 3.5 et je dois garder cette version, j'ai testé avec 3.6 et il m'affiche bien la liste dans l'ordre d'insertion.
    Y a-t-il un moyen pour garder le même ordre d’insertion SVP sous 3.5 ?

    Merci beaucoup pour votre aide

  2. #2
    Membre averti Avatar de zancrows
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 155
    Points : 346
    Points
    346
    Par défaut
    Bonjour,

    tu devrais regarder du côté des OrderedDict.

    => https://docs.python.org/3/library/co...ns.OrderedDict

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Les dictionnaires ne sont pas ordonnés. Les liste oui, les dictionnaires non. La bonne solution est effectivement les OrderedDict

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par mckgh Voir le message
    J'ai le Python 3.5 et je dois garder cette version, j'ai testé avec 3.6 et il m'affiche bien la liste dans l'ordre d'insertion.
    Il y a il un moyen pour garder le même ordre d’insertion SVP sous 3.5 ?
    Ce que vous constatez en 3.6 est un effet de bord de la nouvelle implémentation des dictionnaires qui vient avec cette version.
    Et "effet de bord" signifie que vous ne pouvez en profiter qu'avec cette version là où utiliser OrderedDict qui fait ce boulot là plus proprement car outre que çà ne fonctionne pas avec les versions plus anciennes, rien ne dit qu'un nouvel algorithme ne change encore cela.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Janvier 2018
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 20
    Points : 6
    Points
    6
    Par défaut OrderedDict
    Merci a tous pour vos réponses,

    J'ai vu pour le "OrderedDict" mais il propose de réordonner le dictionnaire, mais je n'arrive pas a trouver comment garder l'ordre d’insertion c'est comeme dingue la différence entre 3.5 et 3.6 , c'est juste incroyable
    Si vous avez la solution vous pouvez me le donner SVP?

    D'avance Merci beaucoup

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    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 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par mckgh Voir le message
    J'ai vu pour le "OrderedDict" mais il propose de réordonner le dictionnaire, mais je n'arrive pas a trouver comment garder l'ordre d’insertion

    Suffit de créer directement l'OrderedDict avec un ordre précis de clefs. Faut pas te contenter que ça te tombe tout cuit dans le bec. Faut aussi chercher un peu de ton côté !!!
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    liste = OrderedDict(
    	(
    		("Nom", "Hugo"),
    		("Prenom", "Paul"),
    		("Age", 80),
    		("Adresse", "Ici"),
    	)
    )
     
    print(liste)
    print(liste["Nom"])
    print(liste.items())
    Et appeler une variable "liste" pour représenter un dictionnaire alors qu'il existe le type "list" (qui, lui, représente autre chose) c'est pas ce qu'il y a de plus sensé.

    Citation Envoyé par mckgh Voir le message
    c'est comeme dingue la différence entre 3.5 et 3.6 , c'est juste incroyable
    C'est toi qui est incroyable. On te dit que la norme pour un dictionnaire c'est "pas d'ordre prédéterminé" donc tu considères qu'un dico ne sera jamais ordonné ce qui t'évite de te poser alors des questions métaphysiques. Et surtout tu évites de t'appuyer sur un comportement de 3.6 qui "semble" te proposer un dictionnaire ordonné alors que ce n'est pas assuré que ce soit vraiment voulu ni que ça restera ainsi.

    PS je ne comprends pas "comeme". S'agit-il d'un lointain ancètre de la locution "quand-même" ???
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,
    Citation Envoyé par mckgh Voir le message
    Si vous avez la solution vous pouvez me le donner SVP?
    Une solution est de ne pas utiliser de dictionnaire mais 2 listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> labels= [ 'Nom', 'Prenom', 'Age', 'Adresse' ]
    >>> liste = [ 'Doe', 'Jane', 26, 'N/A' ]
    >>> for x, y in zip(labels, liste):
    ...     print(x, y)
    ...
    Nom Doe
    Prenom Jane
    Age 26
    Adresse N/A
    car listes et tuples sont des séquences ordonnées.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Garder le même ordre des colonnes excel
    Par lobna20 dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 05/08/2014, 14h55
  2. Garder le même ordre d'enregistrement
    Par swibina dans le forum DataStage
    Réponses: 1
    Dernier message: 26/06/2012, 16h43
  3. [Collections]Garder l'ordre d'insertion
    Par Leyne dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 13/12/2005, 19h25
  4. casting DWORD en string, garder la même valeur
    Par titouille dans le forum SL & STL
    Réponses: 2
    Dernier message: 19/08/2005, 21h17
  5. Réponses: 11
    Dernier message: 17/01/2005, 16h58

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