2016-10-13 7 views
0

Ich bin neu in RubySplit-Hash in Hashes Ruby

Ich habe einen Hash mit einer großen Sammlung von Schlüssel => Wert-Paare. Ich möchte diesen Hash abhängig vom Schlüssel in Hashes aufteilen.

{..."LoopLabs "=>1, "Influanza "=>1, "Cleo Media "=>1, "Adento "=>1, "HireRadar "=>1, "FidorFactory "=>1, "Four Energy "=>1, "Liefery "=>5, "Weaveworks "=>1, "Gastrofix "=>1 } 

Ich erwarte, dass das folgende Ergebnis:

{ label: "LoopLabs", values: [[1]] } 
{ label: "Influanza", values: [[1]] } 
{ label: "Liefery", values: [[5]] } 
... 

Danke für die Hilfe!

Antwort

2

Sie können etwas tun:

hash = {"LoopLabs "=>1, "Influanza "=>1, "Cleo Media "=>1, "Adento "=>1, "HireRadar "=>1, "FidorFactory "=>1, "Four Energy "=>1, "Liefery "=>5, "Weaveworks "=>1, "Gastrofix "=>1 } 
hash.map {|k,v| {label: k, values: [[v]]}} 
# => [{:label=>"LoopLabs ", :values=>[[1]]}, 
# {:label=>"Influanza ", :values=>[[1]]}, 
# {:label=>"Cleo Media ", :values=>[[1]]}, 
# {:label=>"Adento ", :values=>[[1]]}, 
# {:label=>"HireRadar ", :values=>[[1]]}, 
# {:label=>"FidorFactory ", :values=>[[1]]}, 
# {:label=>"Four Energy ", :values=>[[1]]}, 
# {:label=>"Liefery ", :values=>[[5]]}, 
# {:label=>"Weaveworks ", :values=>[[1]]}, 
# {:label=>"Gastrofix ", :values=>[[1]]}] 
0

Der allgemeine Weg, dies wäre zu erreichen:

hash.dup 
    .group_by(&:shift) 
    .map(&%i|label values|.method(:zip)) 
    .map(&:to_h) 
Verwandte Themen