RUBY WATIR - 对存储在Hash中的重复键进行排序

时间:2016-03-29 17:25:20

标签: ruby sorting duplicates key watir

我正在尝试排序Hash密钥,(密钥可以重复)但Ruby忽略了重复密钥,然后按警告排序剩余密钥,如下所示。

代码:

gridColumn1= Hash.new{|hsh,key| hsh[key] = [] }

gridColumn1 = { "z"=>["AAPL"], "A"=>["B"], "A"=>["AAPL", "FB", "GE"], "GOOG"=>["HD", "QQQ", "SCHW"], "V"=>[]}

gridColumn1.sort.to_h

实际输出:

{"A"=>["AAPL", "FB", "GE"], "GOOG"=>["HD", "QQQ", "SCHW"], "V"=>[], "z"=>["AAPL"]}

warning: duplicated key at line 14 ignored: "A"

我期待:

{"A"=>["B"], "A"=>["AAPL", "FB", "GE"], "GOOG"=>["HD", "QQQ", "SCHW"], "V"=>[], "z"=>["AAPL"]} 

1 个答案:

答案 0 :(得分:0)

Ruby hash不能有重复键,它的全部目的是映射键 - >值。

要拥有重复键 - 您可以使用数组数组:

gridColumn1 = [
  ["z", ["AAPL"]],
  ["A",["B"]],
  ["A",["AAPL", "FB", "GE"]],
  ["GOOG", ["HD", "QQQ", "SCHW"]],
  ["V", []]
]

gridColumn1.sort_by &:first
# => [["A", ["B"]], ["A", ["AAPL", "FB", "GE"]], ["GOOG", ["HD", "QQQ", "SCHW"]], ["V", []], ["z", ["AAPL"]]]