我有:
keys = ["a", "b", "j"]
vals = [1, 42, 9]
我希望像:
somedic = ["a"=>1, "b"=>42, "j"=>9]
即
Dict{String,Int64} with 3 entries:
"j" => 9
"b" => 42
"a" => 1
但是如何?
答案 0 :(得分:15)
像这样:
keys = ["a", "b", "j"]
vals = [1, 42, 9]
yourdic = Dict(zip(keys, vals))
返回的Dict将是Dict{String, Int}
类型(即我系统上的Dict{String, Int64}
),因为键是String
的向量,而val是Int
的向量第
如果您希望Dict具有较少的特定类型,例如AbstractString
和Real
,您可以这样做:
Dict{AbstractString, Real}(zip(keys, vals))
如果你在一个数组中有对:
dpairs = ["a", 1, "b", 42, "j", 9]
你可以这样做:
Dict(dpairs[i]=>dpairs[i+1] for i in 1:2:length(dpairs))
与上述相同的语法适用于获得较少特定类型,例如:
Dict{Any, Number}(dpairs[i]=>dpairs[i+1] for i in 1:2:length(dpairs))
答案 1 :(得分:1)
我不认识朱莉娅 - 但如果朱莉娅有zip
,那么这应该有效:dict(zip(keys,vals))
。
(忏悔:这就是人们如何在python中做到的。)
答案 2 :(得分:0)
我认为 Julian 的方法是使用矢量化的 .=>
版本
keys = ["a", "b", "j"]
vals = [1, 42, 9]
Dict(keys .=> vals)
这相当于使用 broadcast(=>, x, y)
https://docs.julialang.org/en/v1/manual/arrays/#man-array-and-vectorized-operators-and-functions