使用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个条目:
答案 0 :(得分:3)
出于某些内部原因,这是2的幂(我猜这是因为使用树或类似的东西,我不知道)。避免直接抓住内部。而是使用迭代器keys(dk)
。如果您希望将键作为数组,请使用collect(keys(dk))
。