[英]How do I create a hash where the keys are values from an array Ruby
我有一个数组:
arr = [a, ab, abc]
我想使用数组的值作为键进行哈希:
newhash = [a[1], ab[1], abc[1]]
我努力了:
arr.each do |r|
newhash[r] == 1
end
无济于事。
我将如何在红宝石中实现这一目标?
==是比较。 =正在分配。 因此,只需将==修改为=。 有用。
newhash = {}
arr.each do |r|
newhash[r] = 1
end
(我相信a,ab,abc是字符串)
要了解更多信息,这可能会对您有所帮助。 数组到哈希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}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.