简单的问题,我有这两个地图
[{"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
)
这不使用过滤器,但是请告诉我这是否适合您。
我想使用Enum.group_by/3
这是我的尝试:
Kernel.SpecialForms.for/1
理解力被大大低估了。这可能是最简单的方法。