使用枚举图创建键图

问题描述 投票:1回答:4

简单的问题,我有这两个地图

[{"Africa", 1}, {"America", 2}, {"Europe", 3}]
[{"Congo", 1, 1}, {"France", 2, 3}, {"Spain", 3, 3}, {"USA", 4, 2}, {"Egypt", 5, 1}]

我想使用Enum.map和Enum.filter获得以下结果

[
  Africa: [{"Congo", 1}, {"Egypt", 1}],
  America: [{"USA", 4}],
  Europe: [{"France", 2}, {"Spain", 3}]
]

我已经尝试使用以下组合,但无法获得预期的结果。你可以帮忙吗?

Enum.map(
  [{"Africa", 1}, {"America", 2}, {"Europe", 3}],
  fn {continent_name, continent_id} ->
    Enum.filter(
      [{"Congo", 1, 1}, {"France", 2, 3}, {"Spain", 3, 3}, {"USA", 4, 2}, {"Egypt", 5, 1}],
      fn {country_name, country_id, country_continent_id} ->
        if continent_id == country_continent_id do
          [continent_name: [{country_name, country_id}]]
        end
      end
    )
  end
)
elixir
4个回答
0
投票

这不使用过滤器,但是请告诉我这是否适合您。


1
投票

我想使用Enum.group_by/3


1
投票

这是我的尝试:


1
投票

Kernel.SpecialForms.for/1理解力被大大低估了。这可能是最简单的方法。

© www.soinside.com 2019 - 2024. All rights reserved.