sts*_*sts 210 ruby hash output
我希望得到一个迭代Ruby Hash的特定输出.
这是我想迭代的哈希:
hash = {
1 => ['a', 'b'],
2 => ['c'],
3 => ['d', 'e', 'f', 'g'],
4 => ['h']
}
Run Code Online (Sandbox Code Playgroud)
这是我想得到的输出:
1-----
a
b
2-----
c
3-----
d
e
f
g
4-----
h
Run Code Online (Sandbox Code Playgroud)
在Ruby中,如何使用Hash获得这样的输出?
sep*_*p2k 313
hash.each do |key, array|
puts "#{key}-----"
puts array
end
Run Code Online (Sandbox Code Playgroud)
关于我应该添加的顺序,在1.8中,项目将以随机顺序迭代(好吧,实际上是按照Fixnum的散列函数定义的顺序),而在1.9中,它将按照文字的顺序迭代.
tom*_*rad 81
迭代哈希的最基本方法如下:
hash.each do |key, value|
puts key
puts value
end
Run Code Online (Sandbox Code Playgroud)
eri*_*rik 48
hash.keys.sort.each do |key|
puts "#{key}-----"
hash[key].each { |val| puts val }
end
Run Code Online (Sandbox Code Playgroud)
gle*_*ald 18
在散列上调用sort会将其转换为嵌套数组,然后按键对它们进行排序,因此您只需要:
puts h.sort.map {|k,v| ["#{k}----"] + v}
Run Code Online (Sandbox Code Playgroud)
如果你实际上不需要"----"部分,它可以只是:
puts h.sort
Run Code Online (Sandbox Code Playgroud)