Dans mon tableau, j'essaie de récupérer la clé avec la valeur la plus importante de "valeur_2". Dans ce cas, "B":
"comparison of Hash with Hash failed (ArgumentError)".
5 Réponses :
code sortie p>
Pourquoi pop code> ici? Qui endommage le tableau.
Veuillez utiliser des espaces blancheurs appropriés entre vos accolades, vos opérateurs, etc. La lisibilité est très importante lorsque vous codez, pour votre avenir et ceux qui pourraient hériter du code. Les guides de style pour les langues discutent de cela, y compris de Ruby's, par exemple " Espaces et opérateurs ». "Toujours le code comme si le gars qui finit par maintenir votre code sera un psychopathe violent qui sait où vous vivez. Code de lisibilité." - John Woods
Je suppose que l'idée de votre solution boucle à travers chaque élément de hachage et comparez la valeur minimale trouvée avec Mais vous obtenez une erreur à p> car le Il devrait être comme ceci: p> une autre solution: p> hachage ["value_2"] code>. array_hash.values code> est toujours un hash p>
"Magical" Les nombres faibles comme ceux qui sont souvent un problème. Il est préférable d'utiliser nil code> pour indiquer "no max" ou choisir une valeur au hasard dans la liste afin que vous sachiez que pourrait i> être le max.
Bien que équivalent, la matrice donnée dans la question est généralement écrite: Nous pouvons trouver la clé souhaitée comme suit: p> Voir Enumérable # max_by . Les étapes sont les suivantes: p> dans le calcul Le calcul du bloc est p> Supposons maintenant et nous souhaitons Pour renvoyer une matrice de toutes les clés pour lesquelles la valeur de qui retourne le même tableau que: p> voir énumérable # plat_map . p> p> g code>, pour p>
Arr code> est comme suit: p> "valeur_2" code> est maximale ( ["B", "D"] code>). Nous pouvons obtenir cela comme suit. P> plat_map (&: clés) code> sténographie pour: p>
J'utiliserais: hachage [* my_array] code> prend le tableau de hachage et la tourne en un seul hachage. Puis max_by code> a > itérale chaque paire de la clé / valeur, renvoyer une matrice contenant la valeur de clé "B" code> et le sous-hachage, ce qui facilite la saisie de la clé à l'aide de d'abord code>: < / p>
Vous avez demandé "Qu'est-ce que je manque?".
Je pense qu'il vous manque une bonne compréhension des structures de données que vous utilisez. Je vous suggère d'essayer d'imprimer les structures de données et d'examiner attentivement les résultats. P>
Le moyen le plus simple est Vous pouvez obtenir des résultats plus jolis à l'aide de rendements: p> Cela vous aide à voir que Vous pouvez également consulter l'expression donne: p> pas ce que vous attendiez? : -) p> étant donné cela, que vous attendriez-vous à être retourné par Utilisez p myarray code> qui donne: p> pp code>: p> myarray code> n'a qu'un seul élément, un hachage. p> array_hash.values.max code > À l'intérieur de la boucle: p> array_hash.values.max code> dans la boucle ci-dessus? p> p code> et / ou pp code> libéralement dans votre code rubis pour aider à comprendre ce qui se passe. p> p>
Savez-vous que
myARRAY code> contient un seul élément qui est un autre tableau. Et que la matrice intérieure contient un seul hachage avec trois clés et d'autres hachages en tant que valeurs. Est-ce vraiment la structure que vous voulez?Comme @stefan a mentionné, vous devriez peut-être examiner votre structure:
myarray.size # => 1 code>. Il contient simplement un hachage:myarray.first # => {"A" => {"value_1" => 30, "value_2" => 240}, "B" => {"value_1" => 40, "Value_2" => 250}, "C" => {"value_1" => 18, "value_2" => 60}} code>Remarque: Ruby est une langue et des lettres majuscules sensibles à la casse ont une signification spécifique en termes de syntaxe. Les variables et les noms de méthodes doivent être des lettres minuscules. Les capitales indiquent des constantes de la forme
classname code> ouconstante_name code>.La structure de
myarray code> est suspecte. Un tableau de hachages où chaque clé de hachage est différente aurait dû être un hash / hachage composé de hachage. Votre question devrait vraiment veiller à la manière de rassembler les données et de créer la variable. " Quel est le problème XY? " explique. Une fois que les données sont sur la bonne forme, il est facile de faire plus avec elle.