2017-11-14 21 views
2

からの私は、このようなRubyの配列を持っているとしましょう:ルビー:水和物のハッシュ値配列

values = ['val_a', 'val_b',..., 'val_z'] # 26 values 

とキー

hash = {a: nil, b: nil, ... , z: nil} # 26 keys 

とハッシュ私は配列をソートすることを知っている、と私は知っていますハッシュのキーがソートされ、配列とハッシュの両方が同じサイズであることがわかります。

はどうすればよいエレガント水和物のハッシュ値Iが

{a: 'val_a', b: 'val_b', ... , z: 'val_z'} 

答えて

8
hash_with_values = hash.keys.zip(values).to_h 

なるように、いくつかの(ほとんど?)言語で、ハッシュ/マップのキーは、順不同であることに注意してくださいで終わるように、うまくいかない。これはRuby < 1.9でも当てはまりましたが、その後はオーダーされることが保証されています(挿入オーダー)。

3

Rubyはあなたが次の操作を行うことができます2.4.0以来:

hash.transform_values.with_index { |v,i| values[i] } 

Hash#transform_valuesを使用して、意図は明確です。その危険な相手のHash#transform_values!も利用可能です。

+0

いい名前です。 transform_valuesは意図について非常に明確です。 – bdavidxyz

関連する問題