I need to define and use a "3-dimensional" dictionary. I don't fully understand dictionaries, so I'm sure what I'm doing is, at best, flawed ... and probably just outright dumb.
Code:
# Set up and initialize two-dimensional dict
maxR = 3
R = {"one": [0] * maxR,
"two": [0] * maxR
}
# Set up and initialize three-dimensional dict
maxE = 4
E = {"alpha": [[0] * maxE] * maxR,
"beta" : [[0] * maxE] * maxR
}
# change some individual values
R ["one"][2] = 11
R ["two"][0] = 13
E ["alpha"][2][3] = 17
E [("beta", 1, 2)] = 29
# Print out contents
for i in range (maxR):
print ("R [one][", i, ", ] = ", R ["one"][i])
for i in range (maxR):
print ("R [two][", i, ", ] = ", R ["two"][i])
print ()
for i in range (maxR):
for j in range (maxE):
print ("E [alpha][", i, "] [", j, "] = ", E ["alpha"][i][j])
for i in range (maxR):
for j in range (maxE):
print ("E [beta][", i, "] [", j, "] = ", E ["beta"][i][j])
Results:
R [one][ 0 , ] = 0
R [one][ 1 , ] = 0
R [one][ 2 , ] = 11
R [two][ 0 , ] = 13
R [two][ 1 , ] = 0
R [two][ 2 , ] = 0
E [alpha][ 0 ] [ 0 ] = 0
E [alpha][ 0 ] [ 1 ] = 0
E [alpha][ 0 ] [ 2 ] = 0
E [alpha][ 0 ] [ 3 ] = 17
E [alpha][ 1 ] [ 0 ] = 0
E [alpha][ 1 ] [ 1 ] = 0
E [alpha][ 1 ] [ 2 ] = 0
E [alpha][ 1 ] [ 3 ] = 17
E [alpha][ 2 ] [ 0 ] = 0
E [alpha][ 2 ] [ 1 ] = 0
E [alpha][ 2 ] [ 2 ] = 0
E [alpha][ 2 ] [ 3 ] = 17
E [beta][ 0 ] [ 0 ] = 0
E [beta][ 0 ] [ 1 ] = 0
E [beta][ 0 ] [ 2 ] = 29
E [beta][ 0 ] [ 3 ] = 0
E [beta][ 1 ] [ 0 ] = 0
E [beta][ 1 ] [ 1 ] = 0
E [beta][ 1 ] [ 2 ] = 29
E [beta][ 1 ] [ 3 ] = 0
E [beta][ 2 ] [ 0 ] = 0
E [beta][ 2 ] [ 1 ] = 0
E [beta][ 2 ] [ 2 ] = 29
E [beta][ 2 ] [ 3 ] = 0
The two-dimensional version ("R") works as I expected. However the three-dimensional version ("E") does not -- it appears to set values in a slice rather than an individual element. Note the "17" and "29" values above. What am I doing wrong? [note: my actual application is not homogeneous so I can't use arrays]