如何检查Julia中词典中是否有键?

Ste*_*ski 5 data-structures julia

假设我有一个Dict对象和一个键值,我想看看字典中是否已有该键的条目?我该怎么做呢?

Ste*_*ski 10

有几种方法可以做到这一点。假设这是您的字典:

d = Dict(
    "aardvark" => 1,
    "bear"     => 2,
    "cat"      => 3,
    "dog"      => 4,
)
Run Code Online (Sandbox Code Playgroud)

如果您有钥匙,则可以使用以下haskey功能检查其是否存在:

julia> haskey(d, "cat")
true

julia> haskey(d, "zebra")
false
Run Code Online (Sandbox Code Playgroud)

一种更简单的检查方法是检查该密钥是否在通过调用返回的密钥集中keys(d)

julia> ks = keys(d)
Base.KeySet for a Dict{String,Int64} with 4 entries. Keys:
  "aardvark"
  "bear"
  "cat"
  "dog"

julia> "cat" in ks
true

julia> "zebra" in ks
false
Run Code Online (Sandbox Code Playgroud)

最后,如果字典中存在与键相关联的值,这是很常见的。您可以通过d[k]检查其中k存在keys(d)但涉及其他字典查找的内容作为单独的步骤来执行此操作。相反,如果您知道某些哨兵值不能作为字典中的值,例如nothing,则可以使用该get函数以默认值查找键:

v = get(d, k, nothing)
if v !== nothing
    # keys(d) contains k
end
Run Code Online (Sandbox Code Playgroud)

如果你一无所知的种类的值d可以映射按键,这不是一个安全的选择,因为它可能是对的情况下k => nothing存在于d