r = Date.range(~D[2019-07-01], ~D[2019-07-31])
q =
%{
~D[2019-07-22] => 387,
~D[2019-07-23] => 256,
~D[2019-07-24] => 117,
~D[2019-07-25] => 1
}
我有一个可枚举的日期范围,并且我尝试为date => 0
中不存在的每个日期添加q
。
使用for
循环会很容易,但这不是一个选择。我尝试了各种Enum.map
函数,我很确定那不是我想要的。我想我想使用reduce
,但不确定。
我该如何处理?
谢谢!
答案 0 :(得分:2)
Enum.reduce(r, q, &Map.put_new(&2, &1, 0))
具有较低的Kernel.SpecialForms.for/1
理解力的版本(每次迭代都会查找地图):
for date <- r, do: {date, Map.get(q, date, 0)}, into: %{}