2010-05-20 11 views
15

2 हैश:रूबी: मर्ज दो हैश एक के रूप में और मूल्य के साथ जुड़ा हुआ

h1 = { "s1" => "2009-7-27", "s2" => "2010-3-6", "s3" => "2009-7-27" } 

h2 = { "s1" => "12:29:15", "s2" => "10:00:17", "s3" => "12:25:52" }  

मैं इस तरह एक के रूप में दो हैश मर्ज करना चाहते हैं:

h = { "s1" => "2009-7-27 12:29:15", 
     "s2" => "2010-3-6 10:00:17", 
     "s3" => "2009-7-27 2:25:52" } 

क्या सबसे अच्छा तरीका है करने के लिए है इस? धन्यवाद!

उत्तर

35
h = h1.merge(h2){|key, first, second| first + " " + second } 

देखने के लिए अगर अपनी चाबी ही कर रहे हैं यह काम करेंगे की जरूरत है। आपके कोड में, वे नहीं हैं ("एस 1" बनाम "एस 1 =")। क्या वे एक ही कुंजी होने चाहिए?

+0

को सही किया गया आपका बहुत बहुत धन्यवाद! चाबियाँ एक जैसी हैं। – www

+0

चुबास का जवाब देने के लिए धन्यवाद। लेकिन, अगर 'h1' और' h2' में एक ही कुंजी नहीं है, तो तर्क टूट जाता है। इसे ठीक करने के लिए कोई विचार? –

2

तुम्हारा मतलब है:

Hash[h1.map{|k,v| [k, "#{v} #{h2[k]}"]}] 

=> {"s3"=>"2009-7-27 12:25:52", "s1"=>"2009-7-27 12:29:15", "s2"=>"2010-3-6 10:00:17"} 

नोट हैश, अव्यवस्थित हैं अगर आप एक आदेश दिया हैश चाहते तो आप शायद at this

+0

आपका "इस पर देखो" लिंक मर चुका है, सैम। –

+1

धन्यवाद @MartinCleaver –

संबंधित मुद्दे