我有以下兩個散列ruby中的散列減法和輸出應該是散列格式?
a = {"Jan-14"=>"10", "Feb-14"=>"100", "Mar-14"=>10}
b = {"Jan-14"=>"5", "Feb-14"=>"50", "Mar-14"=>0}
我需要執行(AB)也輸出應該是哈希格式
我有以下兩個散列ruby中的散列減法和輸出應該是散列格式?
a = {"Jan-14"=>"10", "Feb-14"=>"100", "Mar-14"=>10}
b = {"Jan-14"=>"5", "Feb-14"=>"50", "Mar-14"=>0}
我需要執行(AB)也輸出應該是哈希格式
如果你的意思是相同的鍵的減去值,那麼你可以嘗試
a.merge(b) {|k, o, n| (o.to_i - n.to_i).to_s}
# => {"Jan-14"=>"5", "Feb-14"=>"50", "Mar-14"=>"10"}
我不知道'merge'的塊形式,這很整齊。儘管當我在Ruby 2.1中嘗試它時,只有當兩個哈希具有相同的密鑰時,塊才被調用。合併的剩餘部分只需複製'a'或'b'的鍵/值,而忽略該塊。這意味着可能不需要防禦性的「(o || 0)」,並且還取決於OP的需求,它可能還不是一個完整的答案。 –
這可以用[set](http://www.ruby-doc.org/stdlib-2.1.1/libdoc/set/rdoc/Set.html)來完成嗎? – Pavan
@NeilSlater是的你是對的。我檢查了Ruby 1.9.3和防禦性的'|| 0'不是必需的。只有當兩個哈希具有相同的密鑰時才調用該塊 – Santhosh
我建議你提供一些更多的信息:在兩個哈希中密鑰總是相同的嗎?數字是字符串和數字的混合嗎?我想用減法,你的意思是減去數字?請舉例說明你期望的輸出是什麼...... – Danny
什麼是散列減法(原文如此)?什麼是(a-b)? – sawa
當問你需要顯示你的努力解決問題。你寫代碼了嗎?如果現在,爲什麼?您是否搜索並找不到解決方案?那麼,那些和爲什麼沒有幫助?請閱讀「[問]」,特別是底部的鏈接和「[mcve]」。 –