【发布时间】:2026-01-31 22:30:01
【问题描述】:
我有一个元组列表
[(1, "aa"), (1, "bb"), (2, "aa"), (3, "cc"), (4, "cc"), (1, "aa")]
我想把它转换成这个
[(1, "aa"), (2, "aa+1"), (1, "aa+2"), (1, "bb"), (3, "cc"), (4, "cc+1")]
顺序无关紧要。
snd 每个元素都是唯一的
我在想一些类似的东西可以工作
identifier :: [String]
identifier = map (\ x -> (\ a b -> b ++ show a) x "+") [1, 2 .. ]
unUniqueNumbered :: [(String, String)] -> [(String, String)]
unUniqueNumbered = zipWith (\b a -> (fst a, snd a ++ b)) identifier
uniquifySND :: [(String, String)] -> [(String, String)]
uniquifySND theList = concat $ groupBy ((==) `on` snd) theList
问题是,groupBy 只对相邻的重复元素进行分组。
我需要改变什么?
【问题讨论】:
-
提示:使用
sortBy -
已经为
String定义了Ord,可以满足您的需求。 -
@assembly.jc 感谢您的提示!
标签: list haskell duplicates tuples grouping