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 :

tri d'un dictionnaire de dictionnaire [Python 2.X]


Sujet :

Python

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    738
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 738
    Points : 394
    Points
    394
    Par défaut tri d'un dictionnaire de dictionnaire
    Bonjour à tous,

    J'ai une structure un peu complexe que j'aimerai trier pour obtenir un dictionnaire (le bouquin pas le type python )

    Voici un exemple :

    Code python : 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
    from collections import OrderedDict
    allObjs = OrderedDict()
    firstLetter = "R"
    color = "Rouge"
    obj = "ballon rouge"
    allObjs[firstLetter] =  OrderedDict()
    allObjs[firstLetter][color] = [obj]
    allObjs[firstLetter][color].append("fleur rouge")
    allObjs[firstLetter][color].append("chapeau rouge")
     
     
    firstLetter = "J"
    color = "Jaune"
    obj = "veste jaune"
    allObjs[firstLetter] =  OrderedDict()
    allObjs[firstLetter][color] = [obj]
    allObjs[firstLetter][color].append("crayon jaune")
     
     
    allObjs = OrderedDict(sorted(allObjs.items()))
    print(allObjs)

    J'aimerai en plus, trier les objets par ordre alphabétique de nom
    Je ne connais pas la liste des couleurs donc je ne peux pas faire :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    allObjs["J"]["Jaune"].sort()
    allObjs["R"]["Rouge"].sort()

    ou alors cela m'oblige à reparcourir tous mon dictionnaire
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for firstLetter, definitions in allObjs.iteritems():
        for color in definitions:
            allObjs[firstLetter][color].sort()


    Il doit bien y avoir plus efficace

    Merci pour votre aide
    Le savoir est une arme alors soyons armés

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    738
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 738
    Points : 394
    Points
    394
    Par défaut
    Bon, de toute façon, je dois reparcourir le dictionnaire pour exploiter les données
    Je vais donc faire mon tri à ce moment là
    Le savoir est une arme alors soyons armés

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 980
    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 : 17 980
    Points : 31 087
    Points
    31 087
    Par défaut
    Salut,

    Citation Envoyé par DonKnacki Voir le message
    Il doit bien y avoir plus efficace
    Avec une hiérarchie, on est obligé de la respecter pour accéder aux subordonnés. C'est "structurel".
    Pourquoi ne pas avoir des "lignes":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [('R', 'Rouge', 'livre rouge'),
    ('J', 'Jaune',  'livre jaune')]
    Après vous avez des index construits avec des dict concernant la première ou la deuxième colonne.
    Peut être qu'utiliser un SGDB (sqlite3 en mémoire) pourrait être plus efficace (sinon côté performances, au moins pour vous permettre de réaliser rapidement les requêtes à optimiser autrement si nécessaire plus tard).

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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    738
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 738
    Points : 394
    Points
    394
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,



    Avec une hiérarchie, on est obligé de la respecter pour accéder aux subordonnés. C'est "structurel".
    Pourquoi ne pas avoir des "lignes":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [('R', 'Rouge', 'livre rouge'),
    ('J', 'Jaune',  'livre jaune')]
    Après vous avez des index construits avec des dict concernant la première ou la deuxième colonne.
    - W
    Je n'y avais pas pensé tout simplement

    Citation Envoyé par wiztricks Voir le message
    Peut être qu'utiliser un SGDB (sqlite3 en mémoire) pourrait être plus efficace (sinon côté performances, au moins pour vous permettre de réaliser rapidement les requêtes à optimiser autrement si nécessaire plus tard).

    - W
    C'est une bonne idée mais que je ne pourrai pas utiliser dans mon cas précis
    Le savoir est une arme alors soyons armés

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    octobre 2005
    Messages
    738
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : octobre 2005
    Messages : 738
    Points : 394
    Points
    394
    Par défaut
    Il semblerait que la solution des dictionnaires soit légèrement plus rapide (pas fait des millions de tests !)

    Je vais continuer avec les dict du coup
    Le savoir est une arme alors soyons armés

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

Discussions similaires

  1. [Python 3.X] Passage d'un CSV à un dataframe puis à un dictionnaire de dictionnaires
    Par Earwen21 dans le forum Calcul scientifique
    Réponses: 5
    Dernier message: 17/04/2018, 15h38
  2. Python et dictionnaire de dictionnaires
    Par AaGayia dans le forum Général Python
    Réponses: 3
    Dernier message: 16/02/2015, 19h32
  3. Remplir un dictionnaire de dictionnaire de ..
    Par AsPrO dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 30/09/2013, 13h20
  4. Dictionnaire de dictionnaire - Module de Classe
    Par NicolasC91 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 17/11/2011, 17h41
  5. Créer un dictionnaire de dictionnaire
    Par bastou93 dans le forum Général Python
    Réponses: 5
    Dernier message: 08/07/2011, 11h36

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