a = ["Bob Green", "Don Brown", "Rich Freedom"]
a_hash = {"key_name" =>{"name" => "a_name", "a_thing" => 0}}
keys = a_hash.keys
for i in 0..a.length
aCOG = a[i]
aCOGkey = a[i].to_s.downcase.delete(' ')
keys[i] = aCOGkey
a_hash[keys[i]]["name"] = aCOG #why does this line fail?
end
回答
寫一個新的鍵值對哈希內的哈希能像這樣工作:
outer_hash['inner_hash_key']['new_key_in_inner_hash'] = 'String I want to add'.
讓我們來看看:
keys[0] == aCOGkey == a[0] == "bobgreen"
貌似是線路出現故障時,因爲沒有鑰匙「bobgreen 「在a_hash
。
雖然會創建一個新條目,不是嗎? –
自從我使用Ruby之後已經有一段時間了,我現在無法測試它,但是我很確定在創建'a_hash [keys [i]]'之前嘗試訪問'name'會導致它崩潰。 –
嵌套哈希不只是自己創建。換句話說,Ruby並不知道密鑰的值也是一個哈希值。
你可以使用所有方法上面具體分配的散列,或者可以使用
a_hash = Hash.new { |h,k| h[k] = {} }
這假定在a_hash
所有值是散列(嵌套散列)。此方法可以將默認值設置爲散列。您也可以設置h[k] = {name:"",a_thing:0}
。
所以你只需要做這樣的:
a = ["Bob Green", "Don Brown", "Rich Freedom"]
a_hash = Hash.new { |h,k| h[k] = {} }
a.each{|n| a_hash[n.to_s.downcase.delete(' ')]["name"] = n}
儘量不要在Ruby中使用for
。改用枚舉數。 使用符號作爲散列鍵。
「使用散列鍵的符號」,當它有意義時。多用途地嘗試使用符號作爲散列鍵可能令人沮喪,因爲有時候這個鍵太複雜而不能成爲符號。 –
什麼時候有道理?參考:http://stackoverflow.com/questions/8189416/why-use-symbols-as-hash-keys-in-ruby另外,如果你知道你可以用這種方式使用符號,它永遠不會太複雜':「這是一個複雜的符號」' – texasbruce
散列鍵不一定是一個字符串。它可以是任何對象。嘗試將所有可以想象的對象轉換爲符號。他們不適合。所以,雖然使用符號來表示速度和內存是一種很好的做法,但並不總是有利的,並且並不總是會導致最易讀的代碼,即投票能夠承受。 –
- 1. 如何將字符串轉換爲散列或將其添加到散列
- 2. 如何使用Ruby將嵌套字符串散列轉換爲符號散列?
- 3. Ruby將字符串轉換爲散列
- 4. 將方法中的散列參數或字符串參數添加到散列(Ruby)
- 5. Ruby如何將元素添加到元素來散列,返回散列?
- 6. 如何將散列元素添加到另一個散列?
- 7. Ruby修改並在散列數組中添加散列值
- 8. 將字符串添加到散列值的末尾
- 9. 添加散列到散列(紅寶石)
- 10. C#:如何散列字符串到RIPEMD160
- 11. 如何將散列添加到數組?
- 12. 將散列添加到散列數組如果不爲空?
- 13. SHA512散列到C#中的字符串
- 14. 將值添加到perl中的散列
- 15. 字符串的散列碼
- 16. perl:將散列對添加到較大的散列
- 17. 如何將字符串散列到[0:1]中的浮點數?
- 18. Ruby - 如何將數組添加到散列鍵?
- 19. 如何在Rust中的散列表中追加字符串值?
- 20. 如何將一個新的散列附加到散列數組?
- 21. 爲什麼在向散列添加散列時,Ruby似乎嵌套了添加的散列?
- 22. 將字符串添加到嵌套在散列內部的數組中
- 23. 字符串散列與php
- 24. 字符串散列算法
- 25. MD5散列字符串
- 26. 單向加密,將散列字符串保存到文件中?
- 27. 得到的字符串散列,像hashids
- 28. 在jquery中添加散列
- 29. 如何正確地散列字符串
- 30. 在散列或符號上動態添加散列紅寶石
這真的很難確定你在這裏做什麼。嘗試解釋什麼是故意,失敗,錯誤信息等。另請參閱[常見問題]。 –