1. ホーム
  2. ルビー

[解決済み】配列からハッシュへの変換 Ruby

2022-04-10 01:45:34

質問

このArrayを変換してください。

a = ["item 1", "item 2", "item 3", "item 4"] 

...ハッシュへ。

{ "item 1" => "item 2", "item 3" => "item 4" }

での要素、すなわち 偶数 のインデックスは キー 奇数 価値観 .

解決方法は?

a = ["item 1", "item 2", "item 3", "item 4"]
h = Hash[*a] # => { "item 1" => "item 2", "item 3" => "item 4" }

これで終わりです。その * というのがあります。 スプラット 演算子を使用します。

Mike Lewis (コメント) によると、1つの注意事項があります: "これには十分注意してください。Ruby はスタック上にスプラットを展開します。大きなデータセットでこれをやると、スタックが吹っ飛ぶことが予想されます(")。

ですから、ほとんどの一般的なユースケースではこの方法は素晴らしいのですが、たくさんのデータに対して変換を行いたい場合は、別の方法を使用してください。例えば、@Łukasz Niemier (コメント欄にもあります) は大規模なデータセットに対してこの方法を提供しています。

h = Hash[a.each_slice(2).to_a]