gpt4 book ai didi

dictionary - 如何查找项目是否包含在 Julia 的 Dict 中

转载 作者:行者123 更新时间:2023-12-02 03:22:02 26 4
gpt4 key购买 nike

我是 Julia 的新手,我正在尝试弄清楚如何检查给定的表达式是否包含在我创建的 Dict 中。

function parse( expr::Array{Any} )
if expr[1] == #check here if "expr[1]" is in "owl"
return BinopNode(owl[expr[1]], parse( expr[2] ), parse( expr[3] ) )
end
end

owl = Dict(:+ => +, :- => -, :* => *, :/ => /)

我查看了 Julia 的文档和其他资源,但找不到任何答案。

“猫头鹰”是我要查的字典的名称。我想运行 return 语句应该 expr[1] 是“+、-、* 或/”。

最佳答案

检查某个字典是否包含某个键的标准方法是:

:+ in keys(owl)

haskey(owl, :+)

您的解决方案取决于您确定 0 不是字典中的值之一这一事实,这通常可能不正确。但是,如果你想使用这种方法(当你不想在字典中执行两次查找时它很有用:一次检查它是否包含某个键,第二次获取分配给该键的值,如果它存在)那么通常你会使用 nothing 作为标记,然后执行检查 get_return_value !== nothing (注意这里有两个 = - 它们是对编译器生成高效代码很重要)。所以你的代码看起来像这样:

function myparse(expr::Array{Any}, owl) # better pass `owl` as a parameter to the function
v = get(expr[1], owl, nothing)
if v !== nothing
return BinopNode(v, myparse(expr[2]), myparse(expr[3]))
end
# and what do we do if v === nothing?
end

请注意,我使用 myparse 名称,因为 parse 是在 Base 中定义的函数,因此我们不希望出现名称冲突。最后,您的 myparse 是递归的,因此您应该为此函数定义第二个方法来处理 expr 不是 Array{Any} 的情况。

关于dictionary - 如何查找项目是否包含在 Julia 的 Dict 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54488780/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com