Sorting 对orddict的值进行排序

Sorting 对orddict的值进行排序,sorting,erlang,hashtable,Sorting,Erlang,Hashtable,为了将orddict的值(记录)提取为排序列表,请尝试以下操作: -module(test). -compile(export_all). -record(node, {name="", cost=0}). test() -> List = orddict:append("A",#node{name="A",cost=1}, orddict:append("B

为了将orddict的值(记录)提取为排序列表,请尝试以下操作:

-module(test).
-compile(export_all).
-record(node, {name="", cost=0}).

test() ->
    List = orddict:append("A",#node{name="A",cost=1},
                          orddict:append("B",#node{name="B",cost=2},
                                         orddict:new())),
    lists:sort(fun({_,A},{_,B}) -> A#node.cost =< B#node.cost end,
               orddict:to_list(List)).
-模块(测试)。
-编译(全部导出)。
-记录(节点,{name=”“,成本=0})。
测试()->
List=orddict:append(“A”),#node{name=“A”,cost=1},
orddict:append(“B”),#node{name=“B”,cost=2},
orddict:new()),
列表:排序(fun({uu,A},{uu,B})->A#node.cost=
排序失败,出现异常错误:{badrecord,node}
正确的语法是什么

解决了的:
正确的插入方法是
orddict:store/2
,而不是
orddict:append/2
。然后模式
{uUa,A}
与比较函数匹配。

正确的语法是:

lists:sort(fun({_,[A]},{_,[B]}) -> A#node.cost =< B#node.cost end,
               orddict:to_list(List)).
例如:

[{"A",[{node,"A",1}]},{"B",[{node,"B",2}]}]

正确的语法是:

lists:sort(fun({_,[A]},{_,[B]}) -> A#node.cost =< B#node.cost end,
               orddict:to_list(List)).
例如:

[{"A",[{node,"A",1}]},{"B",[{node,"B",2}]}]

原因是
orddict:append/3
是一个函数,用于将值附加到现有的键/值对中,其中值必须是列表。在用例中,键不存在,因此会创建该对,并将值附加到空列表中。原因是
orddict:append/3
提供了一个函数,用于将值附加到现有键/值对中,其中值必须是列表。在用例中,键不存在,因此创建了一对,并将值附加到一个空列表中。只是想知道为什么要按已排序的顺序对orddict进行排序?目标是提取和排序orddict的值(碰巧是记录)只是想知道为什么要按已排序的顺序对orddict进行排序?目的是提取和排序orddict的值(碰巧是记录)