Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将散列的散列转换为单个散列_Ruby On Rails_Hash - Fatal编程技术网

Ruby on rails 将散列的散列转换为单个散列

Ruby on rails 将散列的散列转换为单个散列,ruby-on-rails,hash,Ruby On Rails,Hash,我的密码是 @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={:tim

我的密码是

@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}
用任何其他方法都要花很多时间
如果您要查找的是哈希值的值的总和,请帮助我

@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}

我不确定您在那里做什么-最终哈希的键与您开始使用的键不同-我也不确定您可能遇到的所有情况,但我怀疑hash.flatte可能会对您有所帮助。