【问题标题】:order a list by the `snd` of a tuple within that list:按该列表中元组的 `end` 对列表进行排序:
【发布时间】:2011-05-29 21:40:50
【问题描述】:

我有以下元组列表:

[("a",6),("b",1),("c",2),("d",4),("e",1),("f",1),("g",5),("h",3),("i",1),("j",2)]

但是想通过snd 元组的元素来order 列表中的元组。这样,我得到的答案类似于:

[("b",1),("e",1),("f",1),("i",1),("c",2),("j",2),("h",3),("d",4),("g",5),("a",6)]

(即列表按每个元组的第二个 (snd) 排序。

【问题讨论】:

    标签: list haskell


    【解决方案1】:
    sortBy (comparing snd)
    

    sortByList 中,comparingData.Ord 中。

    【讨论】:

      【解决方案2】:

      作为 jleedev 答案的替代方案:

      sortBy (compare `on` snd)
      

      sortByData.List 中,onData.Function 中。

      IMO 这个公式稍微好一些,因为compare 只是来自Ord 的标准类方法,而on 是一个比comparing 更有用的函数。但内容不多。

      【讨论】:

        【解决方案3】:

        由于 Data.List 4.8.0.0 也可以使用sortOn,如下所示:sortOn snd

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-01-10
          • 1970-01-01
          相关资源
          最近更新 更多