我想得到一个特定的输出迭代Ruby哈希。
这是我想迭代的哈希值:
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中,我如何能得到这样的输出与我的哈希?
我想得到一个特定的输出迭代Ruby哈希。
这是我想迭代的哈希值:
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中,我如何能得到这样的输出与我的哈希?
当前回答
在哈希中调用sort将其转换为嵌套数组,然后按键对它们进行排序,所以你所需要的是:
puts h.sort.map {|k,v| ["#{k}----"] + v}
如果你实际上不需要“----”部分,它可以是:
puts h.sort
其他回答
遍历哈希最基本的方法如下:
hash.each do |key, value|
puts key
puts value
end
在哈希中调用sort将其转换为嵌套数组,然后按键对它们进行排序,所以你所需要的是:
puts h.sort.map {|k,v| ["#{k}----"] + v}
如果你实际上不需要“----”部分,它可以是:
puts h.sort
我的一句话解决方案:
散列。每个{|键,数组|放置“#{key}-----”,数组}
我认为它很容易读。
hash.keys.sort.each do |key|
puts "#{key}-----"
hash[key].each { |val| puts val }
end
hash.each do |key, array|
puts "#{key}-----"
puts array
end
关于顺序,我应该补充的是,在1.8中,条目将以随机顺序迭代(好吧,实际上是由Fixnum的哈希函数定义的顺序),而在1.9中,它将以文字的顺序迭代。