2014-09-27 132 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