值我有一个数组:如何创建一个散列密钥是从一个数组的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