-3

私は配列を持っています: キーが配列の位置でa = ["a", "b", "c"]あるハッシュに変換したいです。h = {1=>"a", 2=>"b", 3=>"c"}何か案は?

4

5 に答える 5

3

Ruby での 1 つの方法は次のとおりです。

h = Hash[a.map.with_index { |s, i| [ i + 1, s ] }]

ブロックがない場合a.mapは、Enumerator オブジェクトを取得し、その Enumerator を で反復処理してインデックスを取得できますwith_index。次に、開始インデックスを調整し、正しい順序で並べ替えるだけですHash[]

このようにすることもできます (これは、House の Java の回答の音訳です)。

h = { }
a.each_with_index { |s, i| h[i + 1] = s }

どちらの方法で行うかは、ほとんどが好みの問題です。

于 2013-06-01T04:29:54.083 に答える
1
a = ["a", "b", "c"]
Hash[(1..a.length).zip(a)]

1..a.lengthあなたに与えます[1,2,3](暗黙の変換後)

zip (a) はあなたに与えます[1,"a",2,"b",3,"c"]

于 2013-06-01T06:16:10.590 に答える
0

配列をループするだけです。Java では次のようになります。

Map<Integer, String> map = new HashMap<Integer, String>();
for (int i = 0; i < array.length; i++) {
    map.put(Integer.valueOf(i), array[i]);
}
于 2013-05-31T23:33:57.880 に答える