est-ce possible pour atteindre avec des touches sélectionnées:
par exemple p> donc, la sortie que je reçois est p> Mais, j'avais besoin p> note: strong> Ceci est juste un tableau de test de hachage que j'ai pris pour poser ma question. Mais, le hachage réel a beaucoup de clés. Alors, s'il vous plaît ne répondez pas avec les réponses de comparaison clés p>
3 Réponses :
Je ne peux pas voir une version plus simple de votre code. Pour que cela fonctionne complètement, vous pouvez utiliser le premier argument dans le bloc CODE> Fusionner CODE> au lieu de le renvoyer à la différenciation lorsque vous devez fusionner A code> et B code > ou lorsque vous utilisez simplement A code>. Votre ligne devient: s.merge(l) { |key, a, b| key == :a ? a : [a, b].uniq.join(", ") }
Peut-être que vous pouvez considérer cette option, mais je ne sais pas s'il est moins complexe: La première partie regroupe les hachages par puis il mappe pour fusionner les premiers éléments avec d'autres personnes utilisant HASH # Fusionner P> P> : C code> < / p>
La peine d'indiquer que {: a => 4,: b => "bonjour",: c => "test1"} code> entraînera {: A => 1,: b = > "Bonjour hey hello" ,: c => "test1"} code> parce que uniq code> comparera "bonjour hey" code> à "bonjour" < / code> donc peut-être h.group_by {| h | H [: C]} .Transform_Values {| V | v.uniq {| H | H [: B]}} .values .... Code>
h.each_with_object({}) do |g,h|
h.update(g[:c]=>g) { |_,o,n| o.merge(b: "#{o[:b]}, #{n[:b]}") }
end
#=> { âTest1â=>{:a=>1, :b=>"Hello, Hey", :c=>"Test1"},
# âTest2=>{:a=>3, :b=>"Hi", :c=>"Test2"} }
Veuillez indiquer la question en mots, au début. La question n'est pas implicite d'un seul exemple. Vous ne souhaitez pas conserver la valeur de la clé
: A code> dansh [1] code>?H code> n'est pas le meilleur nom d'un tableau.Si
{A: 4, B: "Bonjour", c: "Test1"} code> Où existe-t-il, je suppose que la sortie doit être identique à celle qu'il est maintenant correct? Comme "Bonjour" existe déjà dans le groupement? À l'heure actuelle, cela n'est pas clair et non géré et aboutira à{A: 1, B: "Bonjour, hey, bonjour", c: "test1"} code> parce queuniq code> comparera"bonjour hey" code> à"bonjour" code>@CarySwoveland Je comprends votre suggestion. Mais, c'est juste un moyen de mettre ma question. Le code actuel est énorme et a un grand nombre de clés dans le hachage
@Engineersmnky Je ne comprends pas ce que vous essayez de dire. Peut-être que ma question est peu claire. Mais vous pouvez essayer le code dans une console
IRB code>. Je ne sais pas où vous obtiendriez une valeur comme"bonjour hey" code> sans, code>@Abhi Désolé pour la faute de frappe, mais la question reste encore que vous avez une vérification de l'unicité dans votre code susceptible d'échouer presque à chaque fois. Je m'inquiète de la production attendue si ce hachage supplémentaire existait