我有一個哈希取鍵值如下圖所示:直接從自定義哈希格式
hash_ex = {:"p, q," => "1, 2,"}
而且hash_ex[:p]
回報nil
:
hash_ex[:p]
# => nil
相反,它應該是1
。我將如何能夠獲得這個關鍵的價值?
我有一個哈希取鍵值如下圖所示:直接從自定義哈希格式
hash_ex = {:"p, q," => "1, 2,"}
而且hash_ex[:p]
回報nil
:
hash_ex[:p]
# => nil
相反,它應該是1
。我將如何能夠獲得這個關鍵的價值?
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
。
但
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
非常感謝你 – 2015-03-19 12:13:34