У меня есть список кортежей, (key,value)
пар. Мне нужно, чтобы удалить элементы, которые дублируют ключ или значение, порядок списка можно изменить, но первое вхождение ключа или значения должны оставаться в списке кортежей:Удаление повторяющихся ключей/значений из списка tuple
Пример:
input: [("r","w"),("n","j"),("a","j"),("d","i"),("s","g"),("r","a")]
output: [("r","w"),("n","j"),("d","i"),("s","g")]
Что я сделал:
removeDuplicates _ [] = []
removeDuplicates seen (x:xs)
| elem (head $ fst x) (fst seen) = [] ++ removeDuplicates seen xs
| elem (head $ snd x) (snd seen) = [] ++ removeDuplicates seen xs
| otherwise = x:removeDuplicates ((fst seen)++(fst x),(snd seen)++(snd x)) xs
Но это должно называться removeDuplicates ("","") something
, которая некрасиво.
Что вы уже пробовали, какие ошибки вы получаете – epsilonhalbe
@epsilonhalbe я добавил мое решение, но это довольно некрасиво на мой взгляд – KameeCoding