Thank you. What would be the work around? How can I push values to defaultdict without changing any other value?
On Friday, July 3, 2015 at 3:35:39 PM UTC+2, Yichao Yu wrote: > > On Fri, Jul 3, 2015 at 9:29 AM, Ali Rezaee <arv....@gmail.com > <javascript:>> wrote: > > Hi, > > > > I have the following code: > > > > using DataStrucures > > d= DefaultDict(ASCIIString,Array{Int64},Array{Int64}(0)) > > > > push!(d["A"],2) > > push!(d["B"],3) > > > > d > > DataStructures.DefaultDict{ASCIIString,Array{Int64,N},Array{Int64,1}} > with 2 > > entries: > > "B" => [2,3] > > "A" => [2,3] > > > > > > Isn't it unexpected that when I push to any key, the value is pushed to > all > > the other keys as well? > > Yes, pretty much. Because the default value is stored by reference and > you are mutating it with `push!` > > See the last paragraph of the corresponding section in the > DataStructures.jl README[1] > > [1] > https://github.com/JuliaLang/DataStructures.jl#defaultdict-and-defaultordereddict > > > > > > Thanks :) >