2016-10-28 20 views
0

我想在Ruby中編寫一個函數,它可以接受一個數組中的數組,並將其轉換爲哈希。這將用於模擬句子並創建任意的單詞序列。生成的地圖將有助於生成與當前句子規則一起提供的所有句子組合。從Ruby數組中創建一個映射

我該如何去做到這一點?我有點失落,從哪裏開始。

+0

歡迎來到SO。我們希望看到您嘗試解決此問題,而不是代碼請求。請閱讀「[問]」,包括鏈接頁面,「[mcve]」和「[Stack Overflow用戶需要多少研究工作?](http://meta.stackoverflow.com/q/261592)」。目前你的問題還爲時過早。嘗試,嘗試,再嘗試一些,然後詢問關於代碼的一部分的具體問題。 –

回答

2

嘗試這種情況:

arr = [ ["<start>", "The <object> <verb> tonight."], 
     ["<object>", "waves", "big yellow  flowers", "slugs"], 
     ["<verb>", "sigh <adverb>", "portend like <object>", "die <adverb>"], 
     ["<adverb>", "warily", "grumpily"] ] 

arr.map { |ar| [ar.shift, ar.map { |str| str.split }] }.to_h 
#=> 
#{ "<start>" => [["The", "<object>", "<verb>", "tonight."]], 
# "<object>" => [["waves"], ["big", "yellow", "flowers"], ["slugs"]], 
# "<verb>" => [["sigh", "<adverb>"], ["portend", "like", "<object>"], ["die", "<adverb>"]], 
# "<adverb>" => [["warily"], ["grumpily"]] } 

ar.shift需要每個子陣列的第一個元素。與ar.map一起使用的塊將剩餘的元素拆分爲數組(空白)。最後,to_h將結果數組轉換爲散列。

+0

謝謝,它的工作!你能否給我一點解釋發生了什麼? – FlameDra

+0

@FlameDra當然,我會更新我的答案:) –

+0

@ sagarpandya82我更新了你的答案。這對我來說更好。檢查你是否喜歡它;) – Ursus