簡體   English   中英

如何創建哈希,其中鍵是來自數組Ruby的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM