-2

以下のように、いくつかのキーと値のペアを持つハッシュがあります。

@level2 = @l2.inject(Hash.new(0)) { |hash,element|
hash[element] +=1
hash }

キーに基づいてハッシュのソートを実行します。

@level2 = @level2.sort_by { |x, _| x }.reverse

ここで、sort_by によって配列の配列が得られると仮定します。これを 2 つの配列に分割して、最初の配列にすべてのキーを含め、2 番目の配列にすべての値を含めたいと考えています。

ハッシュをソートした後は、ハッシュ#キーとハッシュ#値にアクセスできません。したがって、この場合は機能しません。

4

2 に答える 2

6

ハッシュの作成方法に関係なく、Hash#keysメソッドとHash#values. どちらも、あなたが望むように見える配列を返します。

keys_array   = @level2.keys
values_array = @level2.values
于 2012-10-19T00:39:10.160 に答える
0

配列の配列を反復処理して、各要素を新しい配列に追加できます。これにより、要素の順序が維持されます。

keys_array = []
values_array = []
@level2.each do |key, value|
  keys_array << key
  values_array << value
end
于 2013-10-03T20:20:09.227 に答える