2016-03-26 3 views
8

Was ist der beste Weg, um ein Wörterbuch in Julia zusammenzuführen?In Julia, wie man ein Wörterbuch zusammenfügt?

> dict1 = Dict("a" => 1, "b" => 2, "c" => 3) 
> dict2 = Dict("d" => 4, "e" => 5, "f" => 6) 
# merge both dicts 
> dict3 = dict1 with dict2 
> dict3 
Dict{ASCIIString,Int64} with 6 entries: 
    "f" => 6 
    "c" => 3 
    "e" => 5 
    "b" => 2 
    "a" => 1 
    "d" => 4 

Antwort

7

http://docs.julialang.org/en/latest/stdlib/collections/#Base.Dict

merge(collection, others...) 

Construct a merged collection from the given collections. If necessary, the types of the resulting collection will be promoted to accommodate the types of the merged collections. If the same key is present in another collection, the value for that key will be the value it has in the last collection listed. 

julia> merge(dict1,dict2) 
    Dict{ASCIIString,Int64} with 6 entries: 
     "f" => 6 
     "c" => 3 
     "e" => 5 
     "b" => 2 
     "a" => 1 
     "d" => 4 

merge!(collection, others...) 
Update collection with pairs from the other collections. 

julia> merge!(dict1,dict2) 
Dict{ASCIIString,Int64} with 6 entries: 
    "f" => 6 
    "c" => 3 
    "e" => 5 
    "b" => 2 
    "a" => 1 
    "d" => 4 

julia> dict1 
Dict{ASCIIString,Int64} with 6 entries: 
    "f" => 6 
    "c" => 3 
    "e" => 5 
    "b" => 2 
    "a" => 1 
    "d" => 4 
+1

Sie einfach heraus, wenn Neugier, wie damit Schlüsselwerte in Konflikt würde behandeln? Wenn ich die Werte 'a = 5' in 'dict1' und 'a = 7' in 'dict2' habe, was wäre der Wert von 'a' im resultierenden Wörterbuch? – niczky12

+1

@ niczky12 wird es auf 7 aktualisiert, der letzte Wert. –

+1

Wenn Sie die widersprüchlichen Werte beibehalten möchten, können Sie 'union (dict1, dict2)' verwenden; Dies würde jedoch ein "Array" anstelle eines "Dict" zurückgeben. –