在Erlang中重新排序元素

时间:2015-10-18 16:37:22

标签: erlang

我想重新定义一个元组的顺序,寻找特定的单词

示例,我有一个像这样的元组列表:

[{"a",["r001"]},
 {"bi",["bidder"]},
 {"bo",["an"]}]

但有时候元组的顺序可以改变,例如:

[{"bi",["bidder"]},
 {"a",["r001"]},
 {"bo",["an"]}]

[{"bo",["an"]},
 {"a",["r001"]},
 {"bi",["bidder"]}]

元组的第一个字符串/列表是我的唯一键(“bo”,“a”,“bi”)

但是我希望能够重新排序元组列表,总是像:

 [{"a",["r001"]},
     {"bi",["bidder"]},
     {"bo",["an"]}]

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

这样做:

lists:sort(fun({A,_},{B,_}) -> A =< B end, List).

或者这个,它将在第一个元素之后的第二个元素排序:

lists:sort(List).

我提供第二个版本,因为没有自定义排序功能,对于这样的数据来说速度更快。

答案 1 :(得分:2)

如果需要按指定元素排序,只需按指定元素

排序
lists:keysort(1, List).