2013-05-21 71 views
-1

我的代碼是這樣的轉換哈希散列成單個散列

@logs= {-1=>{""=>{:source=>1, :time=>0, :skipped=>0, :mysql=>0, :es=>1}}} 
@logs.each_pair { |user_id , user_content| 
    user_content.each_pair { |kwd , ser_content.each_pair { |kwd , kwd_content| 
    h=kwd_content 
}} 

h={:time_taken=>0, :skipped_count=>0, :mysql_count=>0, :es_count=>1, :source_count=>1} 

它會花費任何時間另一種方式爲這個 請幫我

+2

我不確定你在做什麼 - 最終散列的關鍵字與你開始的關鍵不同 - 我不確定你可能擁有的所有情況,但我懷疑Hash.flatten可能幫你。 – theglauber

回答

0

如果你正在尋找的是與總哈希

@logs = {-1=>{""=>{:source=>1, :time=>0, :skipped=>0, :mysql=>0, :es=>1}}, -2=>{""=>{:source=>1, :time=>0, :skipped=>0, :mysql=>0, :es=>1}}} 
# last part is from http://stackoverflow.com/a/4453690/178651 
h = @logs.values.map{|i|i.values}.flatten.inject{|memo, el| memo.merge(el){|k, old_v, new_v| old_v + new_v}} 

將導致h的以下值::

的散列值的值的值
=> {:source=>2, :time=>0, :skipped=>0, :mysql=>0, :es=>2}