2015-12-08 38 views
-1

我有一個哈希值如下:如何打印多維散在不同的格式

h={1=>{'a'=>3,'b'=>2,'c'=>3},2=>{'a'=>2,'b'=>1,'c'=>3},3=>{'a'=>2,'b'=>1,'c'=>3}} 

我想按如下方式打印:

inner key outer key values 
'a'   1   3 
'a'   2   2 
'a'   3   2 

同爲bc。請指導我。

回答

3
puts "inner key outer key values" 
h.flat_map{|o, h| h.map{|i, v| [i, o, v]}}.sort 
.each{|i, o, v| puts "'#{i}'   #{o}   #{v}"} 
+0

非常感謝@sawa ...感謝幫助 –

+2

@SwapnilSawant:作爲回答您能接受這個答案。 –

1

您可以使用下面的哈希輕鬆打印表格:

h.flat_map { |k,v| [k].product(v.to_a) }. 
    each_with_object(Hash.new { |h,k| h[k]={} }) { |(out,(k,v)),g| 
    g[k].update(out=>v) } 
    #=> { 'a'=>{ 1=>3, 2=>2, 3=>2 }, 
    #  'b'=>{ 1=>2, 2=>1, 3=>1 }, 
    #  'c'=>{ 1=>3, 2=>3, 3=>3 } }