我有一个元组:
Data = {
'F_01_heirId', ["ak238", "ak239", "ak240", "ak241" ...],
'F_01_0014', ["some text", "some more text", "a some more", "xcuub", ...],
'F_02_0010', ["azcde", "axvdss" "scssd", "abcdefg as" ...],
'F_02_0014', ["1222", "1", "1", "10", ...],
...
}
需要按F_02_0010
排序数据元组,因为我们根据排序对'F_02_0010'
进行排序也会更改其他列表的相应元素。
以下是排序后所需的输出:
Data = {
'F_01_heirId', ["ak241", "ak239", "ak240", "ak238" ...]
'F_01_0014', ["xcuub", "some more text", "a some more", "some text", ...],
'F_02_0010', ["abcdefg as", "axvdss", "scssd", "azcde", ...],
'F_02_0014', ["10", "1", "1", "1222", ...],
...
}
答案 0 :(得分:1)
您对Data
的表示不太适合您要执行的任务。以下是您必须完成的步骤:
从Data
中提取列列表,并将它们“压缩”为行列表(或元组)列表。您必须使用可处理超过2或3列表的自定义zip函数:
manyzip([L|Ists]) ->
Fold =
fun(List, Acc) ->
lists:zipwith(fun(A,B) -> [A|B] end,List,Acc)
end,
Reversed = lists:foldl(Fold, [[E] || E <- L], Ists),
[lists:reverse(E) || E <- Reversed].
fun(A,B) -> lists:nth(4, A) < lists:nth(4, B) end
等比较功能结合使用,其中4
是压缩列表中F_02_0010
的索引。manyzip/1
也可以用于此任务!