2014-12-04 33 views

回答

0

==是比較。 =正在分配。所以只需將==修改爲=。有用。

newhash = {} 
arr.each do |r| 
    newhash[r] = 1 
end 

(我相信,AB,ABC都是字符串)

要了解更多信息,這可能會幫助你。 Array to Hash Ruby

+0

是的,這工作。謝謝! – 12nm 2014-12-04 21:56:10

0

你可以這樣說:

ary = [[:foo, 1], [:bar, 2]] 
Hash[ary] # => {:foo=>1, :bar=>2} 

如果你想這樣做,就像你剛纔試過了,要正確初始化哈希:

ary = [:foo, :bar] 
hash = {} 
ary.each do |key| 
    hash[key] = 1 
end # => {:foo=>1, :bar=>2} 
0

如果你感覺像單線程,這也會起作用

h = Hash[arr.collect { |v| [v, 1] } ] 

collect被調用一次數組中的每個元素,所以它返回一個由2個元素組成的鍵值對數組。

然後這個被饋送到哈希構造函數,它輪流對所述陣列爲哈希

0

也可以使用從該Enumerable方法#reduce(其被包括在Array類)。

new_hash = arr.reduce({}) { |hsh, elem| hsh[elem] = 1; hsh } 

而且你new_hash看起來像這樣在Ruby中:

{"a": 1, "ab": 1, "abc": 1} 
相關問題