【问题标题】:Add structure to a hash ruby [closed]向哈希红宝石添加结构[关闭]
【发布时间】:2013-12-23 15:24:13
【问题描述】:

我有以下方式的哈希:

hash = {
    :k1 => number1,
    :k2 => number2
}

我需要一种简单的方法将其转换为:

hash = {
    :k1 => {:count => number1},
    :k2 => {:count => number2}
}

所以我可以将它与其他属性合并。

【问题讨论】:

  • 向我们展示您编写的无效代码。 “要求代码的问题必须证明对正在解决的问题有最低限度的了解。包括尝试的解决方案、它们为什么不起作用以及预期的结果。另请参阅:堆栈溢出问题清单”

标签: ruby merge hashmap


【解决方案1】:

尝试类似:

hash.each {|k, v| hash[k] = {:count => v}}

或者,使用速记哈希语法:

hash.each {|k, v| hash[k] = {count: v}}

【讨论】:

  • @ArupRakshit 他说“改造它”,这似乎意味着修改它。
【解决方案2】:

遗憾的是,Hash#map 将哈希转换为数组,而不是哈希(因为 map 方法已包含在 Enumerable 中)。您最简单的选择可能是:

hash.each { |k,v| hash[k] = {:count => v} }

【讨论】:

  • Hash#map 可以这样处理Hash[hash.map{|k,v|[k,{count:v}]}] 这将返回所需的结果{:k1=>{:count=>23}, :k2=>{:count=>25}}
猜你喜欢
  • 2012-10-17
  • 2023-03-04
  • 2012-12-19
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多