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 liste dans un dictionnaire


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut Tri liste dans un dictionnaire
    Salut à tous,

    Je commence le python et voici mon problème:
    Je parse les logs d'un serveur http. Pour chaque requête je met dans un dico l'IP comme clé et comme valeur un liste avec le couple [nombre de hits,Somme volumes requêtes] initialisé à [1,volume premiere requete] puis incrémenté de 1 pour le compteur de hits et on ajoute le volume de la nouvelle requête rencontrée

    voila a quoi ressemble mon dico:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> dico
    {'111.222.33.44': [5, 120004], '88.222.111.1': [1, 4567],'83.152.149.1': [9, 45509],
    et voila ce que je souhaiterai obtenir: Un tri par hits décroissant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> dico
    {'83.152.149.1': [9, 45509],'111.222.33.44': [5, 120004], '88.222.111.1': [1, 4567]
    J'avais fait la même chose avec des listes [hits,IP,Volume] que j 'avais pu trier assez facilement mais je connaissais pas les dictionnaires et que ca avait l'air pratique, j'ai testé. L'IP comme clé me permet de ne pas avoir de doublons et d'éviter une boucle for pour tester si elle est deja présente... Peut-être existe une façon plus simple de faire ce que je souhaite?
    Merci de m'éclairer sue le sujet.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    bonjour,
    pour trier un dictionnaire il existe la fonction sorted()
    sorted( dico.keys())

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Bonjour,

    Je ne veux pas trier dans l'ordre des clés mais dans l'ordre du premier élément de la liste de chaque clé.

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    deuxieme essai:
    sorted(dico.values(),reverse=True)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2007
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 18
    Par défaut
    Citation Envoyé par xavier-Pierre Voir le message
    deuxieme essai:
    sorted(dico.values(),reverse=True)
    Merci! ce coup ci ça fonctionne nickel.
    Mais comment puis-je faire correspondre la liste trié et les clés de mon dico?

  6. #6
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = {'toto':[2,5,7], 'tata':[1,33,56], 'tutu':[6,5,7], 'dodo':[0,5,7], }
    items =  a.items()
    items.sort(lambda x,y:cmp(x[1][0], y[1][0]))
    te donnera ceci dans items :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [('dodo', [0, 5, 7]), ('tata', [1, 33, 56]), ('toto', [2, 5, 7]), ('tutu', [6, 5, 7])]
    Ce n'est plus un dictionnaire mais un liste de couple (en effet un dict n'est pas ordonné, il faut stocker de cette façon)

    sinon tu te créés un dictionnaire personalisé

Discussions similaires

  1. Récupérer une List dans un Dictionnaire
    Par FruitSellers dans le forum C#
    Réponses: 2
    Dernier message: 15/12/2014, 14h44
  2. Tri alphabétique dans une liste déroulante
    Par floopi51 dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2009, 10h13
  3. Tri de liste dans une lov sur designer 6i
    Par zinabd dans le forum Designer
    Réponses: 6
    Dernier message: 18/11/2008, 16h48
  4. comment modifier une liste dans un dictionnaire?
    Par Mydriaze dans le forum Général Python
    Réponses: 1
    Dernier message: 06/08/2007, 19h57
  5. tri par rapport à une liste dans la clause where
    Par umbakrail dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/07/2006, 11h32

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