【问题标题】:Best way to combine 2 hashes in this order按此顺序组合 2 个哈希的最佳方法
【发布时间】:2012-09-03 02:35:43
【问题描述】:

我有 2 个哈希列表 1 和列表 2。键是用户 ID。这是一个例子

list1 = { '1' => [item1, item2],
          '2' => [item3]
        }

list2 = { '1' => [item 4],
          '3' => [item 5]
        }

我需要将 2 合为一个列表.. 像这样的东西.. 或任何更好的表示赞赏。基本上,需要将每个用户的 list1 和 list2 项目组合到一个数组中,其中第一个项目给我 list1 项目,第二个给我 list2 项目。

{ '1' => [[item 1, item 2], [item 4],
  '2' => [[item 3],[]],
  '3' => [[],[item 5]]
}

我可以用老式的方式来做,但想知道是否有最好的方法来做这件事。想知道我是否可以最小化代码和处理。

【问题讨论】:

    标签: ruby-on-rails ruby arrays hash


    【解决方案1】:

    这个输出呢?

    { 
      '1' => [item 1, item 2, item 4],
      '2' => [item 3],
      '3' => [item 5]
    }
    

    你可以得到它

    ret = list1.merge(list2){ |key, old, new| old + new }
    

    【讨论】:

    • oneliner +1。我希望列表项可区分..但我使用了这样的逻辑 - list1.merge(list2) {|key, old, new| [旧的,新的] }
    • 嘿,对不起..我还没有解决这个问题。对于第一个结果,很好,即我得到 [[item1,item2],[item3]],但第二个结果,我只得到 [item 3] 而不是 [[item 3],[]]。有什么帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2011-12-09
    • 2013-01-06
    • 2011-11-22
    • 2021-09-06
    • 1970-01-01
    • 2012-02-09
    相关资源
    最近更新 更多