2016-04-07 15 views
1

Julia'da tuple değerleri ile sözlük oluşturma olanağı var mı? Julia: tuple değerleri ile sözlük oluştur

ben de tanımlama grubu değerlerini eklemeye çalıştık

dict = Dict{Int64, (Int64, Int64)}() 
dict = Dict{Int64, Tuple(Int64, Int64)}() 

çalıştı ama ben bu yüzden küpe değillerdi sonra bunları değiştirmek başardı.

Herhangi bir fikrin var mı?

Düzenleme:

parallel_check = Dict {herhangi biri, (herhangi biri, herhangi bir)}()

for i in 1:10 
    dict[i] = (i+41, i+41) 
end 

dict[1][2] = 1 # not able to change this way, setindex error! 

dict[1] = (3, 5) # this is acceptable. why? 

cevap

7

demet türleri için sözdizimi (dizilerini yani tipleri) sürüm 0.3 (Int64,Int64) değiştirildi ve 0.4’te Tuple{Int64,Int64}’a kadar. Kıvrık parantezleri not edin, Int64,Int64 etrafında parens değil.

julia> dict = Dict{Int64,Tuple{Int64,Int64}}() 
Dict{Int64,Tuple{Int64,Int64}} with 0 entries 

julia> dict[1] = (2,3) 
(2,3) 

julia> dict[2.0] = (3.0,4) 
(3.0,4) 

julia> dict 
Dict{Int64,Tuple{Int64,Int64}} with 2 entries: 
    2 => (3,4) 
    1 => (2,3) 

Sorunuzun diğer parçasıdır: Eğer böyle istiyor

julia> typeof((1,2)) 
Tuple{Int64,Int64} 

Yani sözlüğü oluşturabilirsiniz: Ayrıca, bir örnek tuplea typeof fonksiyonunu uygulayarak repl bu keşfedebilirsiniz ilgisiz, ama yine de burada cevaplayacağım: tuplelar değişmez - bir tupledaki elementlerden birini değiştiremezsiniz. Öte yandan sözlükler değişebilir, dolayısıyla bir sözlükteki bir yuvaya tamamen yeni bir tuple değeri atayabilirsiniz. Başka bir deyişle, dict[1] = (3,5) yazdığınızda, dict'a girdiğinizde, bu tamamdır, ancak dict[1][2] = 1 yazdığınızda dict numaralı 1 konumunda tuple'a atama yapmanıza gerek yoktur.

+0

Ama ben 0,3 :) –

+0

kullanıyorum Sonra denediğiniz ilk sözdizimi çalışır. – StefanKarpinski

+0

Teşekkürler. Öyle düşündüm ama tamamen emin değildim. –