Re: [問題] hash的排序?

看板Ruby作者 (godfat 真常)時間18年前 (2007/01/27 02:56), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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
謝 :) 不過比較有疑問的是, 比完key後 第3個result是做??
01/27 08:43, 1F

01/27 08:44, , 2F
btw,因為要比key大小 好像to_i比較不會出過(剛試過)
01/27 08:44, 2F

01/27 16:34, , 3F
意思跟 return result; 是一樣的。要看你的 key type,
01/27 16:34, 3F

01/27 16:35, , 4F
也許你的 key 不能 to_i. 我寫的是泛用的,operator <=>
01/27 16:35, 4F
文章代碼(AID): #15kaxxUJ (Ruby)
討論串 (同標題文章)
本文引述了以下文章的的內容:
2
6
完整討論串 (本文為第 2 之 2 篇):
2
6
文章代碼(AID): #15kaxxUJ (Ruby)