Dictionary 为什么Julia DIct.keys显示2的幂

Dictionary 为什么Julia DIct.keys显示2的幂,dictionary,julia,Dictionary,Julia,使用Julia 0.6.2 当我创建一个包含10个项的字典时,键的数组是16,显然是2的次幂 julia>dk.keys 16元素数组{Int64,1}: 0 4. 9 25 100 81 0 0 16 36 64 0 49 0 0 1. 当我创建一个有17个键的字典时 julia> dkk = Dict(k^2 => "*"^k for k = 1:17) 包含17个条目的Dict{Int64,String}: 为什么是64而不是2的下一次幂,也就是32 不管怎样,我真的只想

使用Julia 0.6.2

当我创建一个包含10个项的字典时,键的数组是16,显然是2的次幂

julia>dk.keys
16元素数组{Int64,1}:
0
4.
9
25
100
81
0
0
16
36
64
0
49
0
0
1.

当我创建一个有17个键的字典时

julia> dkk = Dict(k^2 => "*"^k for k = 1:17)
包含17个条目的Dict{Int64,String}:

为什么是64而不是2的下一次幂,也就是32

不管怎样,我真的只想要键,而不是哈希表

注意:当直接访问字典时,条目的数量是我所期望的

julia> dk
包含10个条目的Dict{Int64,String}:

julia> dkk

Dict{Int64,String}有17个条目:

它是2的幂,因为某种内部原因(我猜是因为使用了树或类似的东西,我不知道)。避免直接抓取内部构件。相反,使用迭代器
键(dk)
。如果要将键作为数组,请使用
收集(键(dk))

确定。有道理。我试过julia>collect(dk.keys),它给出了16个元素的数组{Int64,1}base/dict.js,dict是定义dict的地方。注意
\u tablez
n=16
.js?这是朱莉娅的吗?.jl。是的,它在Julia.ok,@JulianFondren找到它:
\u tablesz(x::Integer)=x<16?16:1(x)
julia> dkk