2014-09-27 137 views
0

需要使用哈希和用户提供的值作为哈希和数组形成哈希值...结尾哈希应该有数组项作为关键字和一些额外的字符串添加到他们作出一个可接受的散列,然后与散列提供最初给予优先数组项目,如果碰巧在散列中的重复键在Ruby中合并哈希和数组以形成哈希并将一些字符串添加到最终哈希中要查看的数组值

 argument1 = { 
      'key1' => 'value1', 
      'key2' => 'value2', 
      'C' => 'value3', 
     } 
     argument2 = ["X","key2","Y"] 

有需要一个键和一个字符串值在添加到阵列中的项目他们是作为

  X => { 
      'added_string' => 'added_string2' 
     } 

相同为阵列中的KEY2和也ÿ

上述应与原始参数1被合并为具有以下输出在参数1

 result => { 
       'key1' => 'value1', 
       'C' => 'value3', 
       'X' => {'added_string' => 'added_string2'}, 
       'Y' => {'added_string' => 'added_string2'}, 
       'key2' => {'added_string' => 'added_string2'}, 
     } 

KEY2字段被重写,因为它是一个重复的参数2数组及其内容与参数2中的其他数组项目的内容设置相同

+0

您尝试过任何操作吗? – 2014-09-28 00:53:39

+0

我有这个argument2.each do | value | result1 [value] = Hash.new result1 [value] ['string'] ='string2'end ...然后我将它与参数1合并,如finalresult = argument1.merge!(result1)...但是这并不会创建一个结构良好的散列结果为finalresult => {... X => string1string2 ...}而不是{... X => {string1 => string2 ...} – 2014-09-29 05:16:46

+0

谢谢。最好编辑你的问题并添加你已经尝试过的内容,而不是添加评论。您可以更好地对其进行格式化,这表明您已尝试解决问题,而不是要求人们为您完成工作。 – 2014-09-29 13:58:10

回答

0
argument1 = { 
    'key1' => 'value1', 
    'key2' => 'value2', 
    'C' => 'value3', 
} 
argument2 = ["X","key2","Y"] 

added = { 'added_string' => 'added_string2' } 


puts argument1.merge(
    Hash[argument2.zip([added] * argument2.size)] 
) 

# Hash[:a, :b, :c, :d] => { a: :b, c: :d } 
# [:a].zip([:b]) => [[:a, :b]] 
# [:a] * 3 => [:a, :a, :a] 
+0

Konole开始测试,非常高兴地告诉你输出 – 2014-09-27 19:16:04

+0

已经将表达式等同于一个变量,但是它以字符串结果为任何方式来确保结束变量是散列? – 2014-09-27 19:56:30

+0

@GideonMaina我不理解你。你能解释一下吗? – konole 2014-09-27 21:27:42