首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在julia中使用数组键的Dict

在julia中使用数组键的Dict
EN

Stack Overflow用户
提问于 2019-02-17 17:03:53
回答 1查看 826关注 0票数 3

在朱莉娅语言(ver1.1.0)中,我正在实验当我变异字典键时会发生什么。

在突变前,变量x[1,2,3]都被识别出来。

代码语言:javascript
复制
x = [1,2,3]; d = Dict(x=>"x")
haskey(d, x)
# true

haskey(d, [1,2,3])
# true

一旦我变异了x,变量x[1,2,3,4]都不会被识别。

代码语言:javascript
复制
push!(x, 4)
haskey(d, x)
# false

haskey(d, [1,2,3,4])
# false

haskey(d, [1,2,3])
# false

就价值而言,关键是“等于”x,所以我猜这与散列函数有关,但无法理解源代码

代码语言:javascript
复制
collect(keys(d))[1] == x == [1,2,3,4]
# true

有人能解释一下是什么导致了这种行为,或者建议我应该考虑的资源吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-17 19:41:10

要研究的关键函数是ht_keyindex

在这里您可以看到,为了找到密钥,它必须同时:

在变异x之后,有一个不可忽略的概率,即它将具有相同的hashindex值,并且会找到密钥。例如,在这里,您可以将x的索引4设置为5,所有这些似乎都可以工作:

代码语言:javascript
复制
julia> x[4] = 5
5

julia> x
4-element Array{Int64,1}:
 1
 2
 3
 5

julia> haskey(d, x)
true

因此--就像在任何以类似方式支持字典的编程语言中一样--不应该做字典的突变键。上述讨论在实践中只能是一种理论上的讨论。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54735538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档