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

时间:2017-12-27 00:48:27

标签: dictionary julia

使用Julia 0.6.2

当我创建一个包含10个项目的字典时,键的数组是16,显然是四舍五入到下一个2的幂。

julia> dk.keys 16-element Array{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)

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

...

julia> dkk.keys
64-element Array{Int64,1}:
          0
          0
        100
          0
        121
         81
          0
          0
         16
          0
          ⋮
 4536409040
 4536409456
         36
        225
        256
          0
          0
 4536409904
          1

为什么64而不是2的下一个幂,这将是32?

无论哪种方式,我真的只想要键而不是哈希表。

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

julia> dk

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

julia> dkk

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

1 个答案:

答案 0 :(得分:3)

出于某些内部原因,这是2的幂(我猜这是因为使用树或类似的东西,我不知道)。避免直接抓住内部。而是使用迭代器keys(dk)。如果您希望将键作为数组,请使用collect(keys(dk))