0

当其中一个数组中的值相同时,我在从 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"}

任何帮助表示赞赏

4

1 回答 1

3

哈希不能有重复的键。曾经。

如果他们被允许,你将如何访问“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"]}
于 2013-07-11T01:05:03.730 回答