2015-03-19 86 views
-2

我有一個哈希取鍵值如下圖所示:直接從自定義哈希格式

hash_ex = {:"p, q," => "1, 2,"} 

而且hash_ex[:p]回報nil

hash_ex[:p] 
# => nil 

相反,它應該是1。我將如何能夠獲得這個關鍵的價值?

回答

2

hash_ex中沒有定義密鑰:p。因此nil是預期的結果。

hash_ex = {:"p, q,"=>"1, 2,"} 
hash_ex.keys 
# => [:"p, q,"] 

hash_ex[:"p, q,"] 
# => "1, 2," 

以上示例顯示您已聲明"p, q,"作爲關鍵字。此外"p, q,"這裏被視爲符號而不是字符串。因此hash_ex["p, q,"]也將返回nil

1

hash_ex[:p]回報nil相反,它應該是1

Ruby是不是一個AI,它無法弄清楚如何分析你的「自定義哈希格式」。

我怎麼能得到這個關鍵值?

好了,你有你的格式轉換爲Ruby的理解的結構:

key_string = "p, q," 
value_string = "1, 2," 

keys = key_string.split(/,\s*/).map(&:to_sym) #=> [:p, :q] 
values = value_string.split(/,\s*/).map(&:to_i) #=> [1, 2] 

hash_ex = keys.zip(values).to_h 
hash_ex[:p] #=> 1 
+0

非常感謝你 – 2015-03-19 12:13:34