List 按列表中元组的“snd”对列表进行排序:

List 按列表中元组的“snd”对列表进行排序:,list,haskell,List,Haskell,我有以下元组列表: [("a",6),("b",1),("c",2),("d",4),("e",1),("f",1),("g",5),("h",3),("i",1),("j",2)] 但是,我们希望通过元组的snd元素对列表中的元组进行排序。这样,我得到的答案类似于: [("b",1),("e",1),("f",1),("i",1),("c",2),("j",2),("h",3),("d",4),("g",5),("a",6)] i、 列表按每个元组的第二个snd排序 sortBy (com

我有以下元组列表:

[("a",6),("b",1),("c",2),("d",4),("e",1),("f",1),("g",5),("h",3),("i",1),("j",2)]
但是,我们希望通过元组的snd元素对列表中的元组进行排序。这样,我得到的答案类似于:

[("b",1),("e",1),("f",1),("i",1),("c",2),("j",2),("h",3),("d",4),("g",5),("a",6)]
i、 列表按每个元组的第二个snd排序

sortBy (comparing snd)

sortBy在列表中,比较在Data.Ord中。

作为jleedev答案的替代:

sortBy (compare `on` snd)
其中sortBy在Data.List中,on在Data.Function中


IMO这个公式稍微好一点,因为compare只是Ord中的标准类方法,并且是一个比comparing更普遍有用的函数。但是里面没有太多内容。

因为数据。列表4.8.0.0也可以使用,如下所示:sortOn snd