从两个阵列在红宝石相同的值创建的哈希(Creating a hash from two arrays

2019-10-31 01:20发布

我在创建从2个阵列的散列问题,当值在阵列中的一个是相同的。 例如

names = ["test1", "test2"]
numbers = ["1", "2"]
Hash[names.zip(numbers)]

完美的作品它给了我正是我需要=> {"test1"=>"1", "test2"=>"2"}

然而,如果在“名称”的值是相同的话,根本无法正常工作

names = ["test1", "test1"]
numbers = ["1", "2"]
Hash[names.zip(numbers)] 

示出了{"test1"=>"2"}然而,我希望得到的结果是{"test1"=>"1", "test1"=>"2"}

任何帮助表示赞赏

Answer 1:

哈希不能有重复键。 永远。

如果他们允许,你会怎么进入“2”? 如果你写myhash["test1"]你会想到哪些价值?

相反,如果你希望有一个下几个关键值,使阵列的哈希值。

names = ["test1", "test1", "test2"]
numbers = ["1", "2", "3"]

Hash.new.tap { |h| names.zip(numbers).each { |k, v| (h[k] ||= []) << v } }
# => {"test1"=>["1", "2"], "test2"=>["3"]}


文章来源: Creating a hash from two arrays with identical values in Ruby
标签: ruby arrays hash