有没有办法快速将表格格式的ruby哈希打印到文件中?如:
keyA keyB keyC ...
123 234 345
125 347
4456
...
Run Code Online (Sandbox Code Playgroud)
其中哈希值是不同大小的数组.或者是使用双循环的唯一方法?
谢谢
这是steenslag的一个版本,在数组大小不相同时可以使用:
size = h.values.max_by { |a| a.length }.length
m = h.values.map { |a| a += [nil] * (size - a.length) }.transpose.insert(0, h.keys)
Run Code Online (Sandbox Code Playgroud)
nil 似乎是缺失值的合理占位符,但是您当然可以使用任何有意义的值。
例如:
>> h = {:a => [1, 2, 3], :b => [4, 5, 6, 7, 8], :c => [9]}
>> size = h.values.max_by { |a| a.length }.length
>> m = h.values.map { |a| a += [nil] * (size - a.length) }.transpose.insert(0, h.keys)
=> [[:a, :b, :c], [1, 4, 9], [2, 5, nil], [3, 6, nil], [nil, 7, nil], [nil, 8, nil]]
>> m.each { |r| puts r.map { |x| x.nil?? '' : x }.inspect }
[:a, :b, :c]
[ 1, 4, 9]
[ 2, 5, ""]
[ 3, 6, ""]
["", 7, ""]
["", 8, ""]
Run Code Online (Sandbox Code Playgroud)