按第二个元素对元组列表进行排序

use*_*840 11 sorting haskell tuples

我想按照第二个元素对元组列表进行排序.

输入示例:

[("Bob",3),("Terry",1)]
Run Code Online (Sandbox Code Playgroud)

示例输出:

[("Terry",1)("Bob",3)]
Run Code Online (Sandbox Code Playgroud)

Dan*_*ons 15

另一个很酷的技巧是使用onData.Function:

import Data.Function (on)
import Data.List (sortBy)

sortBy (compare `on` snd) [...]
Run Code Online (Sandbox Code Playgroud)

没有太大的不同,comparing但不时是一个很好的伎俩.

  • `on`有一些不错的技巧.我偶尔会发现`equating = on(==)`是有用的.(`比较=比较') (4认同)

ehi*_*ird 13

你可以使用sortBycomparing:

sortBy :: (a -> a -> Ordering) -> [a] -> [a]
comparing :: (Ord b) => (a -> b) -> a -> a -> Ordering
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我们想要通过第二个元素进行比较.您可以使用comparing snd获取可以通过第二个元素比较两个元组的函数.

  • @ user1214840与任何其他定义相同:`myFancySort = { - 使用ehird的提示实现 - } (2认同)