-2

我希望合并 2 个哈希并将其提供给我,如下面的“预期结果”部分所示。有任何想法吗 ?

示例数据:

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

预期结果

{ 
  '1' => {:from_list1 => [item1], :from_list2 => [item2]},
  '2' => {:from_list2 => [item3]}
}

注意:这几乎是我在Best way to combine 2 hashes in this order 中的另一个问题的更新

4

1 回答 1

1

尝试嵌套注入

list1={'1'=>['item1'],'3'=>['item4']}
list2={"1"=>["item2"], "2"=>["item3"]} 

list2.inject(list1.inject({}) { |c, (k, v)| 
   c[k]=(list2.has_key?(k) ? {:from_list1=>v,:from_list2=>list2[k]} : {:from_list1=>v}) 
   c
   }) { |c, (k, v)| 
      c[k]||={:from_list2=>v}
      c
}

#result:
{"1"=>{:from_list1=>["item1"], :from_list2=>["item2"]}, "3"=>{:from_list1=>["item4"]}, "2"=>{:from_list2=>["item3"]}} 
于 2012-09-10T10:17:30.323 回答