如何在Ruby中迭代散列?

我有这样的哈希:

{ 1=>["a", "b"], 2=>["c"], 3=>["a", "d", "f", "g"], 4=>["q"] } 

我如何迭代它以获得像这样的输出:

 1----- a b 2----- c 3----- ad f g 
 hash.each do |key, array| puts "#{key}-----" puts array end 

关于顺序,我应该补充一点,在1.8中,项目将以随机顺序迭代(实际上,按照Fixnum的散列函数定义的顺序),而在1.9中将​​按照字面顺序迭代。

迭代散列的最基本的方法如下:

 hash.each do |key, value| puts key puts value end 
 hash.keys.sort.each do |key| puts "#{key}-----" hash[key].each { |val| puts val } end 

调用sorting哈希转换成嵌套数组,然后按键sorting,所以你需要的是这样的:

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

如果你实际上不需要“—-”部分,那可以是:

 puts h.sort