在 Julia 中,我如何找出为什么 Dict{String, Any} 是 Any?

In Julia, how do I find out why Dict{String, Any} is Any?

我对 Julia 还很陌生,最近大部分时间都在 Python 中编写代码。我正在使用 Julia 处理和操作 HDF5 文件。

所以当我写出(h5write)时,我得到了一个错误,因为数据参数是混合类型,我需要找出原因。

错误消息说 Array{Dict{String,Any},4} 是我要传递的内容,但是当我查看这些值(这是一个巨大的结构)时,我看到很多 0xff 和这样的值。如何快速找到 Any 而不是单一类型的原因?

只是为了回答这个问题:

如果 my_dicts 是一个 Array{Dict{String, Any}, 4},那么找出字典 Any 部分中隐藏了哪些类型的一种方法是:

unique(typeof.(values(my_dicts[1])))

解释一下:

  • my_dicts[1] 挑选出你的数组的第一个元素,即你的 Dict{String, Any}
  • values然后提取值,也就是字典的Any部分,
  • typeof.(注意圆点)对 values 返回的所有元素广播 typeof 函数,返回所有这些元素的类型;和
  • unique 获取所有这些类型的列表并将其简化为其唯一元素,因此您最终会得到包含在字典 Any 部分中的每个单独类型的列表。