Пока я траверс вложенной Dict в Джулию, она дает эту ошибку:Traverse вложенного Dict в Julia-лане
ERROR: access to undefined reference
in next at dict.jl:567
Вот код, где вы можете воспроизвести эту ошибку:
a = [0,19620,7291,32633,9,32513,42455,10045,31964,42455,11767,54]
b = [14318,16405,19,18913,19,8141,18958,12336,7,16588,17358,30]
d = Dict()
for aa in a
for bb in b
if ! haskey(d,aa)
d[aa]=Dict()
end
d[aa][bb] = 0.5
end
end
for k1 in keys(d)
s =0.0
for k2 in keys(d[k1])
s+= d[k1][k2]
end
for k2 in keys(d[k1])
d[k1][k2] = d[k1][k2]/s
end
end
Пришло если a = [0,1] b = [0,1], он работает нормально.
---- Обновление -----
На самом деле, до тех пор, как массив б имеет 11 различных элементов, то ошибка будет. Кроме того, если
d[k1][k2] = d[k1][k2]/s
стать
d[k1][k2] = d[k1][k2] * s
или любые другие операции, ошибка исчезает.
Любые идеи?
Кроме того, если массив б имеет только 10 элементов, нет никакой ошибки. В этом случае я все же изменил значение во время итерации. Однако я просто изменяю значение, а не структуру dict, поэтому итератору не должно быть проблем. –