2016-11-21 34 views
1

我正在使用dataStructures.jl包。一旦創建了一個字典使用import dataStructures.jl

文檔的在線狀態
dict = DataStructures.SortedDict{Int64, Int64} 

我應該能夠插入鍵值對到該函數的數據結構,例如

insert!(dict, 10, 100) 

,但我不斷收到錯誤

ERROR: MethodError: `insert!` has no method matching insert!(
::Type{DataStructures.SortedDict{Int64,Int64,Ord<:Base.Order.Ordering}}, ::Int64, ::Int64) 
Closest candidates are: 
insert!{T}(::Array{T,1}, ::Integer, ::Any) 
insert!(::BitArray{1}, ::Integer, ::Any) 
insert!(::PyCall.PyVector{T}, ::Integer, ::Any) 

這是爲什麼?謝謝。

回答

2

我想你已經創建了一個數據類型,而不是一個字典:

julia> using DataStructures 

julia> dict = DataStructures.SortedDict{Int64, Int64} 
DataStructures.SortedDict{Int64,Int64,Ord<:Base.Order.Ordering} 

julia> typeof(dict) 
DataType 

-the錯誤消息說「不要調用此函數與一類作爲第一個參數,有一個爲沒有方法「。

我想這是你想要什麼:

julia> dict = SortedDict(["a" => 1, "b" => 2]) 
DataStructures.SortedDict{String,Int64,Base.Order.ForwardOrdering} with 2 entries: 
    "a" => 1 
    "b" => 2 

julia> typeof(dict) 
DataStructures.SortedDict{String,Int64,Base.Order.ForwardOrdering} 
+2

DataStructures.jl可能會更容易一點,構建一個空'SortedDict'。這個定義可以做到這一點:'(:: Type {SortedDict {T,S}}){T,S}()= SortedDict {T,S,Base.Order.ForwardOrdering}()'。這將允許'SortedDict {Int,Int}()'如你所期望的那樣工作。 –

相關問題