223

Ruby Hash を反復する特定の出力を取得したいと考えています。

これは、繰り返したいハッシュです。

hash = {
  1 => ['a', 'b'], 
  2 => ['c'], 
  3 => ['d', 'e', 'f', 'g'], 
  4 => ['h']
}

これは私が取得したい出力です:

1-----

a

b

2-----

c

3-----

d 

e

f

g

4-----

h

Ruby では、 Hash でこのような出力を得るにはどうすればよいですか?

4

6 に答える 6

335
hash.each do |key, array|
  puts "#{key}-----"
  puts array
end

追加する必要がある順序については、1.8 ではアイテムがランダムな順序で反復されます (実際には、Fixnum のハッシュ関数によって定義された順序で)、1.9 ではリテラルの順序で反復されます。

于 2009-08-04T13:38:21.600 に答える
49
hash.keys.sort.each do |key|
  puts "#{key}-----"
  hash[key].each { |val| puts val }
end
于 2009-08-04T13:53:01.877 に答える
18

ハッシュで sort を呼び出すと、ネストされた配列に変換され、キーでソートされるため、必要なのは次のとおりです。

puts h.sort.map {|k,v| ["#{k}----"] + v}

実際に「----」部分が必要ない場合は、次のようにします。

puts h.sort
于 2009-08-04T18:01:34.657 に答える