2

私はRubyが初めてです。次の値を持つ(すでにソートされた)ハッシュがあります。そこの値に基づいて、これらのキーを多次元配列に入れたいと思います。たとえば、

為に

VALUES - KEYS 
acemrs - a
acemrs - b

acrs - c
acrs - d
acrs - e

aeoopstt - f

for - g

foru -h

[ [a,b] , [c,d,e] , [f] , [g] , [h] ] のような配列を探しています

4

3 に答える 3

3
hash = {'a'=>'acemrs','b'=>'acemrs','c'=>'acrs','d'=>'acrs','e'=>'acrs','f'=>'aeoopstt','g'=>'for','h'=>'foru'}
new_hash = {}

hash.each_pair do |key, value|
  (new_hash[value] ||= []) << key
end

array = new_hash.values

以前のハッシュを新しいハッシュvaluesとして使用します。keys定義されていない場合は、 new ごとに新しい配列を作成し、新しいハッシュのすべてのキーを でプッシュしkeysます。新しいハッシュは次のようになりますnew_hash[value] ||= []<< key

{"aeoopstt"=>["f"], "for"=>["g"], "acemrs"=>["b", "a"], "acrs"=>["e", "d", "c"], "foru"=>["h"]}

最後に、これらの値が必要なだけnew_hash.valuesで完了です。

ハッシュ API

于 2012-10-10T01:29:13.940 に答える
1
hash.group_by{|k, v| v}.values.map(&:first)
于 2012-10-10T07:43:49.707 に答える
0

この質問に取り組んでいます:Ruby多次元配列

Ruby の数値配列ライブラリであるNArrayを使用できます 。

require 'narray'

array = NArray[  [a,b] , [c,d,e] , [f] , [g] , [h] ]

それから

array[1][2]'b'array[2][3]を返し、'e' などを返します。

于 2012-10-10T01:14:06.780 に答える