我有一个数组:
arr = [a, ab, abc]
我想使用数组的值作为键来创建哈希:
newhash = [a[1], ab[1], abc[1]]
我试过了:
arr.each do |r|
newhash[r] == 1
end
无济于事。
我如何在ruby中完成此操作?
答案 0 :(得分:0)
==是比较。 =正在分配。所以只需修改== into =。它有效。
newhash = {}
arr.each do |r|
newhash[r] = 1
end
(我相信a,ab,abc是字符串)
要了解更多信息,这可能会对您有所帮助。 Array to Hash Ruby
答案 1 :(得分: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}
答案 2 :(得分:0)
如果你感觉像一个单行,那么这也会有用
h = Hash[arr.collect { |v| [v, 1] } ]
每个元素在数组中调用 collect
,因此它返回一个由2个元素组成的键值对数组。
然后将其提供给哈希构造函数,该构造函数将对数组转换为哈希
答案 3 :(得分:0)
您还可以使用#reduce
中的Enumerable
方法(包含在Array
类中)。
new_hash = arr.reduce({}) { |hsh, elem| hsh[elem] = 1; hsh }
你的new_hash
在Ruby中看起来像这样:
{"a": 1, "ab": 1, "abc": 1}