hash.each {|k, v| puts k if v == hash.values.max }
Cela parcourt chaque paire clé-valeur et renvoie (ou dans ce cas met) la ou les clés où la valeur est égale au maximum de toutes les valeurs. Cela devrait renvoyer plus d'une clé en cas d'égalité.
Si vous souhaitez récupérer plus d'une paire clé / valeur en fonction de l'ordre (deuxième plus grand, plus petit, etc.), un moyen plus efficace sera de trier le hachage une fois, puis d'obtenir les résultats souhaités.
Réponses:
Cela renverra la paire clé-valeur de hachage maximale en fonction de la valeur des éléments de hachage:
la source
J'ai trouvé de cette façon, retourne la clé de la première valeur max
la source
Une autre façon pourrait être la suivante:
Cela parcourt chaque paire clé-valeur et renvoie (ou dans ce cas met) la ou les clés où la valeur est égale au maximum de toutes les valeurs. Cela devrait renvoyer plus d'une clé en cas d'égalité.
la source
Vous pouvez utiliser la méthode de sélection si vous souhaitez que la paire clé / valeur soit renvoyée:
la source
Si vous souhaitez récupérer plus d'une paire clé / valeur en fonction de l'ordre (deuxième plus grand, plus petit, etc.), un moyen plus efficace sera de trier le hachage une fois, puis d'obtenir les résultats souhaités.
Clé de plus grande valeur
Obtenez max et min
2e plus grande paire valeur / clé
Pour reconvertir le tableau de hachage en un hachage
la source
Je l'ai fait aujourd'hui sur un problème similaire et je me suis retrouvé avec ceci:
Pour Ruby inférieur à 2.3, vous pouvez le remplacer
&.last
par l'.try(:last)
un ou l'autre n'est qu'une sauvegarde si votre hachage source est vide:{}
la source
Cela renverra la dernière clé du hachage triée par taille; cependant, il peut y avoir deux clés avec la même valeur.
la source