在 Erlang 中重新排序元素

Reorder elements in Erlang

我想重新定义查找特定单词的元组的顺序

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

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

但有时元组的顺序会发生变化,例如:

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

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

元组的第一个string/list是我的唯一键("bo","a","bi")

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

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

我怎样才能做到这一点?

这样做就可以了:

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

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

lists:sort(List).

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

如需按指定元素排序,按指定元素排序即可

lists:keysort(1, List).