2016-03-29 20 views
0

ソートハッシュキーを使用しています(キーは重複しています)が、重複キーは無視されています。RUBY WATIR - ハッシュに格納されている重複キーをソート

コード:

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 

実際の出力:warning: duplicated key at line 14 ignored: "A"

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

私は期待しています:

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

を[ハッシュドキュメント]をお読みください(http://ruby-doc.org/core-2.3.0/Hash.html ): "ハッシュは、ユニークなキーとその値の辞書のようなコレクションです。" "あなたがしようとしていることはできません。 –

答えて

0

Rubyのハッシュが、それはだ、重複キーを持つことができません全体的な目的はkey - > valueをマッピングすることです。

重複キーを持っている - あなたは、配列の配列を使用することができます

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"]]] 
+0

おかげさまで、私はこのアプローチで行くことができますが、私はまだ[["A"、 "AAPL"、 "FB"、 "GE"]、["A"、 "B"]] 、["A"] "]、[" A "]"]、["A" 「A」、「AAPL」、「FB」、「GE」]、「GOOG」、「HD」、「QQQ」、「SCHW」]、[ "V"、[]]、["z"、["AAPL"]]]。 – Dave

+0

@Daveキーだけでなく値も並べ替えたいという意味で、 '.sort_by&:to_s' – Vasfed

+0

No. gridColumn1 = [[" "Z"]、["A"、 "K"、 "私は、この2次元配列を各サブ配列の最初の要素にソートし、探したいものをgridColumn1にソートしたいとします。 = [["A"、 "K"、 "N"]、["A"、 "C"]、["A"、 "B"]、["Z"]]以前は配列を使って出力を上回っていなかったのでハッシュに変更しましたが、ハッシュカントには重複キーがありましたが、今度は同じ問題に戻ります。御時間ありがとうございます。 – Dave

関連する問題