在Elixir中是否有类似Python的计数器?

时间:2016-04-13 10:50:35

标签: elixir

您可以使用Counter计算事件的发生次数。你也可以用这样的迭代创建计数器:

>>> from collections import Counter
>>> Counter("asdasdafasdasdasd")
Counter({'a': 6, 's': 5, 'd': 5, 'f': 1})
>>> Counter([1,2,3,2,1,2,2,5])
Counter({2: 4, 1: 2, 3: 1, 5: 1})

2 个答案:

答案 0 :(得分:3)

不直接,但您可以使用Enum.reduce/3

自行构建
Enum.reduce values, %{}, fn(x, acc) ->
  Map.update(acc, x, 1, &(&1 + 1))
end

答案 1 :(得分:0)

> "asdasdafasdasdasd" |> String.graphemes |> Enum.reduce(%{}, fn (x, acc) -> Map.update(acc, x, 1, &(&1 + 1)) end)         
%{"a" => 6, "d" => 5, "f" => 1, "s" => 5}

> [1,2,3,2,1,2,2,5] |> Enum.reduce(%{}, fn (x, acc) -> Map.update(acc, x, 1, &(&1 + 1)) end)
%{1 => 2, 2 => 4, 3 => 1, 5 => 1}