classificar listas usando sortBy
Estou tentando classificar minha lista de tuplas com base no quarto elemento em cada uma das tuplas. O quarto elemento contém uma sequência que é o nome de uma pessoa. Quero colocar tuplas que contenham o mesmo nome um ao lado do outro. Um exemplo das listas de tuplas antes de serem classificadas é:
[("A",100,"Q",3,"Todd",2.0),
("B",203,"R",3,"Rachel",1.66),
("B",273,"F",1,"Mike",2.66),
("A",200,"P",1,"Rachel",0.0),
("A",549,"D",3,"Todd",2.0),
("B",220,"S",3,"Todd",4.0),
("B",101,"M",3,"Jon",3.33),
("A",999,"N",3,"Rachel",1.33)]
Eu também quero isso:
[("A",100,"Q",3,"Todd",2.0),
("A",549,"D",3,"Todd",2.0),
("B",220,"S",3,"Todd",4.0),
("B",203,"R",3,"Rachel",1.66),
("A",200,"P",1,"Rachel",0.0),
("A",999,"N",3,"Rachel",1.33),
("B",273,"F",1,"Mike",2.66),
("B",101,"M",3,"Jon",3.33)]
O que eu preciso é que todas as tuplas que contêm Todd estejam próximas uma da outra e assim por diante para cada nome. A ordem em que os nomes aparecem não importa, apenas porque eles estão próximos um do outr
sortedList= show . sortBy byName . (map stringToTuple) . (map words) . lines
Esta é a linha de código que estou chamando de ordenar por. Entendo que preciso criar uma funçãobyName
que de alguma forma descobrirá se as tuplas compartilham um nome comu
Qualquer ajuda para me orientar na direção certa para escrever obyName
seria apreciado. Obrigad