use*_*239 2 sorting haskell functional-programming tuples list
可能重复:
按元素的第二个元素对元组列表进行排序
嘿,我有一个看起来像这样的元组列表
[("x", [1,2,3]), ("y", [1,2]), ("z", [1,2,3,4])]
Run Code Online (Sandbox Code Playgroud)
我想按照整数列表的长度按顺序对列表进行排序,整数列表是元组中的第二个元素,但是我的haskell充其量是穷人,我无法想办法做到这一点.
Nik*_*kov 11
sortBy (comparing $ length . snd) [("x", [1,2,3]), ("y", [1,2]), ("z", [1,2,3,4])]
Run Code Online (Sandbox Code Playgroud)
ДМИ*_*КОВ 10
大多数排序问题都可以通过sortBy ::(a -> a -> Ordering) -> [a] -> [a]
功能解决.因此,任务是生成排序函数,该函数基于元组的第二元素的长度来比较两个元素.compare `on` (length . snd) :: (a1, [a]) -> (a1, [a]) -> Ordering
是我们真正需要的.
eblo> sortBy (compare `on` (length . snd)) [("x", [1,2,3]), ("y", [1,2]), ("z", [1,2,3,4])]
[("y",[1,2]),("x",[1,2,3]),("z",[1,2,3,4])]
Run Code Online (Sandbox Code Playgroud)