【问题标题】:split hash into hashes Ruby将哈希拆分为哈希 Ruby
【发布时间】:2017-02-22 08:14:57
【问题描述】:

我是 Ruby 新手

我有一个包含大量键 => 值对的哈希。我想根据键将此哈希拆分为哈希。

{..."LoopLabs "=>1, "Influanza "=>1, "Cleo Media "=>1, "Adento "=>1, "HireRadar "=>1, "FidorFactory "=>1, "Four Energy "=>1, "Liefery "=>5, "Weaveworks "=>1, "Gastrofix "=>1 }

我希望得到以下结果:

{ label: "LoopLabs", values: [[1]] }
{ label: "Influanza", values: [[1]] }
{ label: "Liefery", values: [[5]] }
...

感谢您的帮助!

【问题讨论】:

    标签: ruby hash key


    【解决方案1】:

    你可以这样做:

    hash = {"LoopLabs "=>1, "Influanza "=>1, "Cleo Media "=>1, "Adento "=>1, "HireRadar "=>1, "FidorFactory "=>1, "Four Energy "=>1, "Liefery "=>5, "Weaveworks "=>1, "Gastrofix "=>1 }
    hash.map {|k,v| {label: k, values: [[v]]}}
    # => [{:label=>"LoopLabs ", :values=>[[1]]},
    # {:label=>"Influanza ", :values=>[[1]]},
    # {:label=>"Cleo Media ", :values=>[[1]]},
    # {:label=>"Adento ", :values=>[[1]]},
    # {:label=>"HireRadar ", :values=>[[1]]},
    # {:label=>"FidorFactory ", :values=>[[1]]},
    # {:label=>"Four Energy ", :values=>[[1]]},
    # {:label=>"Liefery ", :values=>[[5]]},
    # {:label=>"Weaveworks ", :values=>[[1]]},
    # {:label=>"Gastrofix ", :values=>[[1]]}]
    

    【讨论】:

      【解决方案2】:

      实现此目的的通用方法是:

      hash.dup
          .group_by(&:shift)
          .map(&%i|label values|.method(:zip))
          .map(&:to_h)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-08
        • 2011-07-01
        • 2017-09-03
        • 1970-01-01
        • 2021-02-05
        • 2014-03-03
        相关资源
        最近更新 更多