Another option is:
julia> using JuMP
julia> C = ["C1", "C2"]
2-element Vector{String}:
"C1"
"C2"
julia> s = Dict(
"W1" => Containers.DenseAxisArray([0 1; 2 0], ["P11", "P12"], C),
"W2" => Containers.DenseAxisArray([3 0; 1 1], ["P21", "P22"], C),
"W3" => Containers.DenseAxisArray([4 0; 2 1; 0 2; 2 1], ["P31", "P32", "P33", "P34"], C),
)
Dict{String, JuMP.Containers.DenseAxisArray{Int64, 2, Tuple{Vector{String}, Vector{String}}, Tuple{JuMP.Containers._AxisLookup{Dict{String, Int64}}, JuMP.Containers._AxisLookup{Dict{String, Int64}}}}} with 3 entries:
"W2" => 2-dimensional DenseAxisArray{Int64,2,...} with index sets:…
"W3" => 2-dimensional DenseAxisArray{Int64,2,...} with index sets:…
"W1" => 2-dimensional DenseAxisArray{Int64,2,...} with index sets:…
julia> s["W1"]
2-dimensional DenseAxisArray{Int64,2,...} with index sets:
Dimension 1, ["P11", "P12"]
Dimension 2, ["C1", "C2"]
And data, a 2×2 Matrix{Int64}:
0 1
2 0
julia> s["W1"]["P11", "C1"]
0
julia> s["W1"]["P12", "C1"]
2
julia> s["W3"]["P34", "C1"]
2