ruby - 如何将多个值推送到同一个哈希键

标签 ruby ruby-on-rails-4 hash

初学者的问题,请帮帮我

my_array = ["city1:state1","city2:state2","city3:state1","city4:state3","city5:state1"]

我如何从这个数组中生成这样的散列?

{
 state1: [city1,city3,city5],
 state2: [city2],
 state3: [city4]
}

我正在尝试这种方式

my_hash = { }
my_array.each do |cs|
 temp = cs.split(":")
 if my_hash.keys.include? temp[1]
  my_hash[temp[1]] = temp[0]
 else
  my_hash[temp[1]] = temp[0]
 end
end

但我不知道如何匹配我的哈希键并附加到键。

最佳答案

稍微修改一下就可以了:

my_hash = { }
my_array.each do |cs|
 temp = cs.split(":")
 if my_hash.keys.include? temp[1].to_sym
  my_hash[temp[1].to_sym] << temp[0]
 else
  my_hash[temp[1].to_sym] = [temp[0]]
 end
end

结果是 {:state1=>["city1", "city3", "city5"], :state2=>["city2"], :state3=>["city4"]}。我假设这就是您的意思(键是符号,值是字符串数组)。

关于ruby - 如何将多个值推送到同一个哈希键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26116192/

相关文章:

ruby - cucumber :后台失败仍然以代码 0 退出

ruby-on-rails - 滚动并获取对资源具有特定访问权限的用户列表

ruby-on-rails-4 - Rails 下拉选择从当年到过去四年的年份

c - 用于快速查询的整数 vector 散列

c - 使用按位运算的 C 中的哈希码算法

ruby-on-rails - 将图像添加到 ruby​​ on rails 中的布局

ruby-on-rails - 如何从 Heroku 错误获取 Rails Heroku 日志回溯

ruby - 连字符键名称上的 MongoMapper 语法错误

ruby-on-rails - Rails-自定义删除前确认对话框的 View

ruby - 什么是具有 'nil' 条件的优雅 Ruby 方法?