gpt4 book ai didi

arrays - 为什么 Julia 在 Dictionary 中生成#undef 键?

转载 作者:行者123 更新时间:2023-12-03 20:33:42 26 4
gpt4 key购买 nike

我制作了一本关于 Julia 的直方图字典,其中包含很多条目。键是 4 元素整数数组,作为对对象的简单调用返回:

In[88] Histogramas
Out[88] Dict{Array{Int64,N},Array{T,N}} with 36540 entries:
[56,8,39,55] => [0,2,4,7,19,44,61,76,124,116 … 0,0,0,0,0,0,0,0,0,0]
[64,20,48,55] => [284,368,202,106,35,3,2,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
[54,9,50,54] => [0,0,0,0,0,0,0,0,0,2 … 1,0,0,0,0,0,0,0,0,0]
[37,26,45,61] => [0,6,11,35,47,86,113,133,136,139 … 0,0,0,0,0,0,0,0,0,0]
[37,15,51,50] => [673,272,48,5,2,0,0,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
[35,22,53,45] => [331,370,201,69,25,4,0,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
[37,25,56,40] => [460,382,127,27,3,0,1,0,0,0 … 0,0,0,0,0,0,0,0,0,0]
....

但是如果我调用 Histogramas.keys然后我得到这个非常奇怪的输出:
Out[90] : 65536-element Array{Array{Int64,N},1}:
#undef
#undef
[56,8,39,55]
#undef
[64,20,48,55]
[54,9,50,54]
#undef
[37,26,45,61]
[37,15,51,50]
...

所以我得到了几乎两倍的键,因为有字典的条目,大部分额外的都是 #undef ,顺便说一句,我也不知道那是什么意思。 ¿ 在什么意义上未定义?

最佳答案

这不是获得 Dict 的正确方法的 key ——您不小心访问了 Dict 的私有(private)内部字段目的。访问 Dict 的正确方法的关键是调用keys Dict 上的功能目的:

julia> d = Dict(:foo => 1.2, :bar => 2.3, :baz => 3.4)
Dict{Symbol,Float64} with 3 entries:
:bar => 2.3
:baz => 3.4
:foo => 1.2

julia> keys(d)
Base.KeyIterator for a Dict{Symbol,Float64} with 3 entries. Keys:
:bar
:baz
:foo

输出 #undef显示数组时表示数组中有未初始化的条目。这类似于 null C、C++ 或 Java 中的值,但与 null 不同, 在 Julia #undef是非一流的:它不是您可以使用或传递的值;对未定义字段或数组槽的任何使用都是立即异常(exception)。

一般来说,Julia 不是一种“面向点的语言”:而在 Python 或 Java 中,您可能希望这样做 obj.frob访问 objfrob或做 obj.frizzle() curl obj ,在 Julia 中,这不太可能是正确的做法。你很可能会做 frob(obj)frizzle(obj)反而。

关于arrays - 为什么 Julia 在 Dictionary 中生成#undef 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37817921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com