在Erlang中计算元组列表中的项数

在Erlang中计算元组列表中的项数,erlang,Erlang,我有以下列表结构: [{A, [{B <--, [A, C]}, {C <--, [B, A]}]}, {B, [{C <--, [A, C]}]}] [{A,[{B您可以使用累加器和一些列表函数编写简单的代码。假设所有列表元素的格式相同: count(L) -> count (L, []). count ([], Cases) -> Cases; count ([{_E1, [{X, [_E2, _E3]}]} | Rest], Cases)

我有以下列表结构:

[{A, [{B <--, [A, C]}, {C <--, [B, A]}]}, {B, [{C <--, [A, C]}]}]

[{A,[{B您可以使用累加器和一些列表函数编写简单的代码。假设所有列表元素的格式相同:

count(L) ->
    count (L, []).

count ([], Cases) ->
    Cases;
count ([{_E1, [{X, [_E2, _E3]}]} | Rest], Cases) ->
    NewCases =
        case lists:keysearch(X, 1, Cases) of
            false ->
                [ {X, 1} | Cases ];
            {value, {X, Val}} ->
                lists:keyreplace(X, 1, Cases, {X, 1+Val})
        end,
    count(Rest, NewCases).

您可以使用累加器和一些列表函数编写简单代码。假设所有列表元素的格式相同:

count(L) ->
    count (L, []).

count ([], Cases) ->
    Cases;
count ([{_E1, [{X, [_E2, _E3]}]} | Rest], Cases) ->
    NewCases =
        case lists:keysearch(X, 1, Cases) of
            false ->
                [ {X, 1} | Cases ];
            {value, {X, Val}} ->
                lists:keyreplace(X, 1, Cases, {X, 1+Val})
        end,
    count(Rest, NewCases).

您可以使用累加器和一些列表函数编写简单代码。假设所有列表元素的格式相同:

count(L) ->
    count (L, []).

count ([], Cases) ->
    Cases;
count ([{_E1, [{X, [_E2, _E3]}]} | Rest], Cases) ->
    NewCases =
        case lists:keysearch(X, 1, Cases) of
            false ->
                [ {X, 1} | Cases ];
            {value, {X, Val}} ->
                lists:keyreplace(X, 1, Cases, {X, 1+Val})
        end,
    count(Rest, NewCases).

您可以使用累加器和一些列表函数编写简单代码。假设所有列表元素的格式相同:

count(L) ->
    count (L, []).

count ([], Cases) ->
    Cases;
count ([{_E1, [{X, [_E2, _E3]}]} | Rest], Cases) ->
    NewCases =
        case lists:keysearch(X, 1, Cases) of
            false ->
                [ {X, 1} | Cases ];
            {value, {X, Val}} ->
                lists:keyreplace(X, 1, Cases, {X, 1+Val})
        end,
    count(Rest, NewCases).

它可以通过多种方式实现

 count(List) ->
    count(List, dict:new()).

count([{_, InList} | Rest], Dict) ->
    count(Rest, count2(InList, Dict));
count([], Dict) ->
    dict:to_list(Dict).

count2([{Symbol, _} | Rest], Dict) ->
    count2(Rest, dict:update_counter(Symbol, 1, Dict));
count2([], Dict) ->
    Dict.
示例输出:

1> test:count([{one, [{b, [123]}, {c,[123]}, {b,[123]}]}, {two, [{b, [123]}, {c,[123]}, {b,[123]}]}]).
[{b,4},{c,2}]

它可以通过多种方式实现

 count(List) ->
    count(List, dict:new()).

count([{_, InList} | Rest], Dict) ->
    count(Rest, count2(InList, Dict));
count([], Dict) ->
    dict:to_list(Dict).

count2([{Symbol, _} | Rest], Dict) ->
    count2(Rest, dict:update_counter(Symbol, 1, Dict));
count2([], Dict) ->
    Dict.
示例输出:

1> test:count([{one, [{b, [123]}, {c,[123]}, {b,[123]}]}, {two, [{b, [123]}, {c,[123]}, {b,[123]}]}]).
[{b,4},{c,2}]

它可以通过多种方式实现

 count(List) ->
    count(List, dict:new()).

count([{_, InList} | Rest], Dict) ->
    count(Rest, count2(InList, Dict));
count([], Dict) ->
    dict:to_list(Dict).

count2([{Symbol, _} | Rest], Dict) ->
    count2(Rest, dict:update_counter(Symbol, 1, Dict));
count2([], Dict) ->
    Dict.
示例输出:

1> test:count([{one, [{b, [123]}, {c,[123]}, {b,[123]}]}, {two, [{b, [123]}, {c,[123]}, {b,[123]}]}]).
[{b,4},{c,2}]

它可以通过多种方式实现

 count(List) ->
    count(List, dict:new()).

count([{_, InList} | Rest], Dict) ->
    count(Rest, count2(InList, Dict));
count([], Dict) ->
    dict:to_list(Dict).

count2([{Symbol, _} | Rest], Dict) ->
    count2(Rest, dict:update_counter(Symbol, 1, Dict));
count2([], Dict) ->
    Dict.
示例输出:

1> test:count([{one, [{b, [123]}, {c,[123]}, {b,[123]}]}, {two, [{b, [123]}, {c,[123]}, {b,[123]}]}]).
[{b,4},{c,2}]

你介意详细说明吗?你介意详细说明这部《代码》是什么意思吗?你介意详细说明这部《代码》是什么意思吗?你介意详细说明这部《代码》是什么意思吗,