[英]Sort a list of tuples by their second elements
我想按照第二個元素對元組列表進行排序。
輸入示例:
[("Bob",3),("Terry",1)]
示例輸出:
[("Terry",1)("Bob",3)]
另一個很酷的技巧是從Data.Function使用on
:
import Data.Function (on)
import Data.List (sortBy)
sortBy (compare `on` snd) [...]
沒有什么不同, comparing
但不時是一個很好的技巧。
考慮“常規”排序
sort xs = ... a < b ...
這種排序必須使用compare
,或其朋友,如<
。 因此,如果你已經實現了這樣的事情,那么你可以改為compare (snd a) (snd b)
或者snd a < snd b
而不是僅僅compare ab
或a < b
snd a < snd b
。
sort xs = ... snd a < snd b ...
當然,如果你變得聰明,你將抽象出“訪問者”,並使其成為排序功能的額外輸入:
sortComparingOn f xs = ... f a < f b ...
你甚至可能完全抽象出比較器:
sortBy cmp xs = ... a `cmp` b ...
sortBy
中提供了sortBy,如第三篇所述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.