如何在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