Hatena::ブログ(Diary)

はけの徒然日記 このページをアンテナに追加 RSSフィード

2005 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 04 | 05 | 08 | 09 | 10 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 10 | 11 |
2011 | 01 | 02 | 03 | 04 | 11 | 12 |
2012 | 02 | 03 | 05 |
2014 | 02 | 03 | 04 | 05 | 12 |
2015 | 05 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 04 | 05 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 |

2006-08-21(Mon)

#sort

Ruby勉強

Hashの各要素のソートの実験。ただsortを使用すればkeyによるソートが行われる? 値(val)やkey/valの組合せで評価したい場合は#sort_byを使用してブロックの中で評価の定義を記述する。ソート順は評価結果のオブジェクトの演算子<=>の定義による?

h = {"a" => 3, "b" => 1, "c" =>2, "d" => 0}

# key文字列を使用してのソート
p h.sort
    # => [["a", 3], ["b", 1], ["c", 2], ["d", 0]]
p h.sort.reverse
    # => [["d", 0], ["c", 2], ["b", 1], ["a", 3]]
p h.sort_by{|key|  -key[0].unpack("c")[0]}       # 1文字目のコードの逆順
    # => [["d", 0], ["c", 2], ["b", 1], ["a", 3]]


# valの値を使用してのソート
p h.sort_by{|key,val| val}
    # => [["d", 0], ["b", 1], ["c", 2], ["a", 3]]
p h.sort_by{|key,val| -val}
    # => [["a", 3], ["c", 2], ["b", 1], ["d", 0]]
p h.sort_by{|key,val| (val - 1.2)**2 }           # valが1.2に近い順
    # => [["b", 1], ["c", 2], ["d", 0], ["a", 3]]


# ランダムに並べ替え
p h.sort_by{rand}

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/hake/20060821/p1