在 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).
我想重新定义查找特定单词的元组的顺序
例如,我有一个这样的元组列表:
[{"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).