【问题标题】:Convert hash of hash into Single hash将散列的散列转换为单个散列
【发布时间】:2013-05-16 07:11:43
【问题描述】:

我的代码是这样的

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

这需要很多时间 请帮帮我

【问题讨论】:

  • 我不确定你在那里做什么 - 最终散列的键与你开始使用的不同 - 我不确定你可能遇到的所有情况,但我怀疑Hash.flatten 可能会对您有所帮助。

标签: ruby-on-rails hash


【解决方案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}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 2016-07-18
    • 2011-08-21
    • 2012-03-27
    • 2023-03-07
    • 2020-06-29
    • 2018-11-07
    相关资源
    最近更新 更多