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

VB.NET Discussion :

dictionnaire et clés decroissantes


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Par défaut dictionnaire et clés decroissantes
    Bonjour,

    J ai un dictionnaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public DemRed As New Dictionary(Of Double, Double)
    pour lequel je voudrais retrouver les elements par ordre decroissant des clés.

    Si j utilise l habituel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each a_lvl_criteria As Double In DemRed.keys
    Il me retourne les elements par clés croissantes.

    Y a t il une methode pour qu il me retourne les clés-valeurs par clés decroissantes ?

    (J ai essayé d utilisé SortedDictionary, mais j ai pas compris comment ca fonctionnait ...)

    Merci

    Slumpy

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Slumpy Voir le message
    Si j utilise l habituel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each a_lvl_criteria As Double In DemRed.keys
    Il me retourne les elements par clés croissantes.
    C'est complètement par hasard, tu ne peux pas te baser là-dessus... l'ordre des clés est indéterminé dans un dictionnaire.

    Il suffit de trier avec Linq par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each a_lvl_criteria As Double In DemRed.keys.OrderBy(Function(k) k)

  3. #3
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Par défaut
    Salut Thomas, et merci d avoir pris la peine de repondre.

    Ouaip j avais vu OrderBy.

    Comme ici par exemple : http://www.nicotouch.com/2010/03/csh...un-dictionary/

    Mais j avoue que je ne comrpends pas comment ca marche ...

    Style dans ta ligne de code que sont Function(k) et k ?

    Me faut il creer une fonction Function ?

    Merci

    Slumpy

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Slumpy Voir le message
    Mais j avoue que je ne comrpends pas comment ca marche ...
    Bah comme dans l'exemple que j'ai donné... tu copies/colles et ça marche
    (enfin normalement)

    Citation Envoyé par Slumpy Voir le message
    Style dans ta ligne de code que sont Function(k) et k ?
    C'est une expression lambda ; ça permet de déclarer une méthode anonyme.
    En l'occurrence c'est une fonction qui prend un paramètre k (de type Double parce que les clés sont des double, mais il n'est pas nécessaire de le préciser parce que le compilateur le "devine" tout seul d'après le contexte), et renvoie le paramètre tel quel.
    Donc en gros, on trie la collection selon la valeur des éléments.

    Citation Envoyé par Slumpy Voir le message
    Me faut il creer une fonction Function ?
    Non, c'est un mot-clé du langage...

  5. #5
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Par défaut
    Bah en fait, comme tout bon noob, j ai copié/collé, mais ca me retournait cela :

    Value of type 'System.Collections.Generic.KeyValuePair(Of Double, Double)' cannot be converted to 'Double'.


    Est ce que a_lvl_criteria represente encore uniquement la clé ou la paire Clé, valeur ?

    Merci

    Slumpy

  6. #6
    Membre éclairé
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Par défaut
    J ai aussi essayé le code suivant, mais j ai aussi une erreur :





    Je ne sais pas pourquoi mais comme vous pouvez le voir, mon dictionaire contient bien des paires clés/valeurs.

    Par contre a_lvl_criteria est 0,0 ...

    J avoue que je suis perdu ...

    Slumpy

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

Discussions similaires

  1. Comparer les clés de dictionnaires
    Par RTK45 dans le forum Général Python
    Réponses: 5
    Dernier message: 08/04/2012, 16h20
  2. Réponses: 6
    Dernier message: 02/01/2012, 16h05
  3. Récupérer les clés de mon dictionnaire
    Par tom77380 dans le forum Général Python
    Réponses: 4
    Dernier message: 18/12/2011, 00h41
  4. Tri dictionnaire par clés
    Par mister2502 dans le forum Général Python
    Réponses: 7
    Dernier message: 07/04/2009, 21h37
  5. les clés d'un dictionnaire
    Par billyrose dans le forum Général Python
    Réponses: 4
    Dernier message: 03/08/2008, 14h22

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