如何输出键值

时间:2019-04-04 13:39:09

标签: elixir

我正在研究一个解决方案,我想将101结果之类的数字添加到1 + 0 + 1 = 2中,并且我想将其输出为101, 2

我有一个数组,因此无法正常工作,这是到目前为止的代码:

numbers = Enum.map(array, fn i -> String.to_integer(i) end)

# Get the sum of the numbers
sum = Enum.map(numbers, fn i -> Integer.digits(i) |> Enum.sum() end)

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果要同时获取数字和数字的总和,则应在映射函数中返回一个元组或一个列表,如下所示:

df = df_folder name 1.append(df_folder name 2)
df.drop_duplicates(subset=['text'], keep='first', inplace=True)
df = df.sample(frac=1)
df.head()

现在,给定像sum = Enum.map(nums, fn i -> {i, Integer.digits(i) |> Enum.sum()} end) 这样的字符串列表,["101", "202"]将等于sum

答案 1 :(得分:0)

TGO提供了正确的解决方案,我只想指出,您可以通过管道将操作组合在一起以获得更简洁的功能,并且如果在第一张地图上使用Stream而不是Enum,则该列表只会被懒惰地枚举一次。您要求输出键值,所以我去了地图而不是元组。

def sum_digits(list) do
  list
  |> Stream.map(&String.to_integer/1)
  |> Enum.map(fn i -> %{i => i |> Integer.digits() |> Enum.sum()} end)
end

示例:

iex> Example.sum_digits(["101", "123"])
[%{101 => 2}, %{123 => 6}]