Вы должны использовать функцию keys()
, чтобы получить ключи вашего словаря вместо доступа к полю keys
. (Обратите внимание, что в большинстве случаев не очень удобно обращаться к внутренним полям объектов Julia, особенно когда существуют методы доступа).
И в частном случае проверки того, появляется ли данный ключ в Dict
, с использованием haskey()
будет еще больше idomati c.
Следующее должно работать:
# Some definitions so that your example is runnable
julia> T1 = Int;
julia> T2 = Int;
julia> L = 1:10;
julia> pos_func(i) = i%3;
julia> Ans=Dict{T1,Vector{T2}}()
Dict{Int64,Array{Int64,1}} with 0 entries
julia> for i in L
pos=pos_func(i)
if haskey(Ans, pos) # <- keys(Ans) instead of Ans.keys
push!(Ans[pos],i)
else
Ans[pos] = T2[i] # or maybe simply [i], unless your collection L is heterogeneous
end
end
julia> Ans
Dict{Int64,Array{Int64,1}} with 3 entries:
0 => [3, 6, 9]
2 => [2, 5, 8]
1 => [1, 4, 7, 10]