在Erlang中重新排序元素

use*_*622 5 erlang

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

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

[{"a",["r001"]},
 {"bi",["bidder"]},
 {"bo",["an"]}]
Run Code Online (Sandbox Code Playgroud)

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

[{"bi",["bidder"]},
 {"a",["r001"]},
 {"bo",["an"]}]
Run Code Online (Sandbox Code Playgroud)

要么

[{"bo",["an"]},
 {"a",["r001"]},
 {"bi",["bidder"]}]
Run Code Online (Sandbox Code Playgroud)

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

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

 [{"a",["r001"]},
     {"bi",["bidder"]},
     {"bo",["an"]}]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Mic*_*ael 5

这样做:

lists:sort(fun({A,_},{B,_}) -> A =< B end, List).
Run Code Online (Sandbox Code Playgroud)

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

lists:sort(List).
Run Code Online (Sandbox Code Playgroud)

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