Julia字典异常:可打印键但无法外部访问的问题求助
问题原因与解决建议
核心问题
你的字典键实际是Symbol类型,但循环外你用了String类型的键访问——Julia是强类型语言,不同类型的键无法匹配,因此触发KeyError。
eachcol(nodedata_data)返回的列名是Symbol(比如:pwpl_idno_12184),通过Dict(pairs(...))生成字典后,键的类型保持为Symbol。循环中打印键时,Julia会自动把Symbol转换成类似字符串的格式输出,让你误以为是String,但实际类型是Symbol。
验证方法
在循环内添加一行打印键的类型,即可确认:
for (key, value) in nodedata_dict if counter <= 2 println("Key:$key, Value: $value") println(typeof(key)) # 新增该行,会输出`Symbol` println(key in keys(nodedata_dict)) println(nodedata_dict[key]) counter += 1 end end
解决办法
有两种方案可选:
方案1:创建字典时将键转为String类型
修改字典初始化代码,把Symbol键转成String:
nodedata_dict = Dict(string(k) => v for (k, v) in pairs(eachcol(nodedata_data)))
之后用字符串键"pwpl_idno_12184"就能正常访问。
方案2:循环外使用Symbol类型的键访问
保持字典不变,访问时用Symbol格式的键(冒号开头):
println("ok can we get this node right", nodedata_dict[:pwpl_idno_12184])
额外验证
可以打印所有键的类型彻底确认问题:
println(typeof.(keys(nodedata_dict)))
内容的提问来源于stack exchange,提问作者Alex Turnbull
相关产品推荐
相关产品推荐

