【发布时间】:2017-12-27 00:48:27
【问题描述】:
使用 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 个条目:
【问题讨论】:
-
base/dict.js 是定义字典的地方。注意
_tablesz和n = 16。 -
.js ?这是在茱莉亚吗?
-
.jl。是的,它在 Julia 中。
-
好的,@JulianFondren 找到了它:
_tablesz(x::Integer) = x < 16 ? 16 : one(x)<<((sizeof(x)<<3)-leading_zeros(x-1))base/dict.jl
标签: dictionary julia