私は配列を持っています:
キーが配列の位置でa = ["a", "b", "c"]
あるハッシュに変換したいです。h = {1=>"a", 2=>"b", 3=>"c"}
何か案は?
質問する
140 次
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 に答える