我正在尝试排序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"]}
答案 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"]]]