I tried merging two OrderedDicts with merge (also with merge!). The resulting dictionary was of type OrderedDict but was not Ordered!!!
Can you give an example of the behavior you get and the behavior you expect?
To me it looks OK:
julia> using OrderedCollections
julia> d1 = OrderedDict("a" => 1, "b" => 2)
OrderedDict{String, Int64} with 2 entries:
"a" => 1
"b" => 2
julia> d2 = OrderedDict("c" => 3, "a" => 4)
OrderedDict{String, Int64} with 2 entries:
"c" => 3
"a" => 4
julia> merge!(d1, d2)
OrderedDict{String, Int64} with 3 entries:
"a" => 4
"b" => 2
"c" => 3
Here all the order in d1 is preserved and the new elements of d2 are added at the end (which makes sense to me since I am inserting them later, via the merge! operation).
My two dictionaries were Float64 to Float64.
It’s probably worth noting that OrderedDict is ordered by insertion time, not value. You might be looking for a SortedDict.
Thank you, that explains it.