Creating list adding elements on specific conditions?

Just a couple of weeks ago we had something similar come up which involved collecting key/values into a map based upon conditions in another data structure. I came up with this helper function:

  defp conditional_put(map, _key, nil), do: map
  defp conditional_put(map, key, val), do: Map.put(map, key, val)

and for decimals:

  defp conditional_put_decimal(map, _key, nil), do: map
  defp conditional_put_decimal(map, key, num_str) do
    case Decimal.parse(num_str) do
      {:ok, num} -> Map.put(map, key, num)
      :error   -> map
    end
  end

Those pipeline nicely.