值我有一個數組:如何創建一個散列密鑰是從一個數組的Ruby
arr = [a, ab, abc]
我想打一個散列,使用數組的值作爲鍵:
newhash = [a[1], ab[1], abc[1]]
我曾嘗試:
arr.each do |r|
newhash[r] == 1
end
無濟於事。
我該如何在ruby中完成此操作?
值我有一個數組:如何創建一個散列密鑰是從一個數組的Ruby
arr = [a, ab, abc]
我想打一個散列,使用數組的值作爲鍵:
newhash = [a[1], ab[1], abc[1]]
我曾嘗試:
arr.each do |r|
newhash[r] == 1
end
無濟於事。
我該如何在ruby中完成此操作?
==是比較。 =正在分配。所以只需將==修改爲=。有用。
newhash = {}
arr.each do |r|
newhash[r] = 1
end
(我相信,AB,ABC都是字符串)
要了解更多信息,這可能會幫助你。 Array to Hash Ruby
你可以這樣說:
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}
如果你感覺像單線程,這也會起作用
h = Hash[arr.collect { |v| [v, 1] } ]
collect
被調用一次數組中的每個元素,所以它返回一個由2個元素組成的鍵值對數組。
然後這個被饋送到哈希構造函數,它輪流對所述陣列爲哈希
也可以使用從該Enumerable
方法#reduce
(其被包括在Array
類)。
new_hash = arr.reduce({}) { |hsh, elem| hsh[elem] = 1; hsh }
而且你new_hash
看起來像這樣在Ruby中:
{"a": 1, "ab": 1, "abc": 1}
是的,這工作。謝謝! – 12nm 2014-12-04 21:56:10