dictionary - 将键值对添加到 Julia 语言字典中的现有键

标签 dictionary julia

我正在使用 Julia 1.63,目前正在尝试循环创建字典。 我可以从下面的字典开始。

dict = Dict("A_1" => 1, "B_1" => 2, "X" => "A_1" => 1)
Dict{String, Any} with 3 entries:
  "X"   => "A_1"=>1
  "B_1" => 2
  "A_1" => 1

现在我想向“X”键添加键值对“B_2”=> 2

我尝试了以下方法:

push!(dict["X"],Dict("B_2" => 2))
ERROR: MethodError: no method matching push!(::Pair{String, Int64}, ::Dict{String, Int64})
Closest candidates are:
  push!(::Any, ::Any, ::Any) at abstractarray.jl:2387
  push!(::Any, ::Any, ::Any, ::Any...) at abstractarray.jl:2388
  push!(::AbstractChannel, ::Any) at channels.jl:10

push!(dict["X"],"B_2" => 2)
ERROR: MethodError: no method matching push!(::Pair{String, Int64}, ::Pair{String, Int64})
Closest candidates are:
  push!(::Any, ::Any, ::Any) at abstractarray.jl:2387
  push!(::Any, ::Any, ::Any, ::Any...) at abstractarray.jl:2388
  push!(::AbstractChannel, ::Any) at channels.jl:10

令我困惑的一件事是它在字典的上层起作用。

push!(dict,"B_2" => 2)
Dict{String, Any} with 4 entries:
  "B_2" => 2
  "X"   => "A_1"=>1
  "B_1" => 2
  "A_1" => 1

有什么明显的我遗漏的吗? 感谢您的帮助。

最佳答案

问题是 "X" 的值不是 Dict,而是 Pair。如果您想将多个 Pair 分配给一个键,您应该改用 Dict。您必须相应地对其进行初始化。

julia> dict = Dict("A_1" => 1, "B_1" => 2, "X" => Dict("A_1" => 1))
Dict{String, Any} with 3 entries:
  "X"   => Dict("A_1"=>1)
  "B_1" => 2
  "A_1" => 1
julia> push!(dict["X"],"B_2" => 2) 
Dict{String, Int64} with 2 entries:
  "B_2" => 2
  "A_1" => 1
julia> dict
Dict{String, Any} with 3 entries:
  "X"   => Dict("B_2"=>2, "A_1"=>1)
  "B_1" => 2
  "A_1" => 1

关于dictionary - 将键值对添加到 Julia 语言字典中的现有键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69827851/

相关文章:

python - 在 Python 2.x 中打印嵌套字典中的值

DataFrames.jl 行数

julia - 数字类型(函数返回 "wrong"结果)

interpolation - 如何在工作进程中的 SharedArray 上使用插值,而无需每个进程创建自己的数据副本?

julia - Pkg的颜色和符号说明

java - 尝试用 Java 将 2D 图像转换为 3D 对象

javascript - 谷歌地图API版本问题

javascript - D3 数据图数据结构(多年,所有国家)

python - 如何正确使用 pandas Series.map() 和映射字典?

julia - Plots.jl - 关闭轴和网格线