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數位生活區 即時熱門文章