Re: [問題] hash的排序?
※ 引述《skyboy (yes i do...)》之銘言:
: example: (先以值排)
: key   value
: 8      4
: 3      4
: 1      2
: 10     2
value 要大的在前面?
: 然後再以鍵去排, 原來排好的順序(8,3,1,10)會變成 (1,3,8,10)
: 不過這樣先前排的順序就沒效了~
: 想請問一下怎麼keep住之前所排的順序(值)然後再重新做排列呢(鍵)
: key    value
: 3       4
: 8       4
: 1       2
: 10      2
然後 key 小的要在前面?
anyway, 這只是演算法的問題,比較法則為:
1. 比 value 的大小
2. 如果 value 相等,則比 key 的大小
puts({8=>4, 3=>4, 1=>2, 10=>2}.sort{ |lhs, rhs|
  result = (lhs[1] <=> rhs[1])*-1                # 大的在前面
  result =  lhs[0] <=> rhs[0] if result == 0     # 相等則比 key
  result
}.inspect)
== output ==
[[3, 4], [8, 4], [1, 2], [10, 2]]
--
 Nobody can take anything away from him.
 Nor can anyone give anything to him.
 What came from the sea,
 has returned to the sea.
                            Chrono Cross
--
※ 發信站: 批踢踢實業坊(ptt.cc) 
◆ From: 220.135.28.18
推
01/27 08:43, , 1F
01/27 08:43, 1F
→
01/27 08:44, , 2F
01/27 08:44, 2F
推
01/27 16:34, , 3F
01/27 16:34, 3F
→
01/27 16:35, , 4F
01/27 16:35, 4F
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章