python - Julia:将 Dict 项作为参数传递给函数

标签 python function arguments julia

我正在尝试将 Dict 传递给 Julia 中的函数。 Dict 包含成对的参数名称及其各自的值。假设我有一个函数 f 和一个字典 d:

julia> function f(x=10, y=10, z=10); return x^2, y^2, z^2; end
julia> d = Dict("x"=>3, "z"=>7, "y"=>5)

这会抛出一个 MethodError:

julia> f(d...)
ERROR: MethodError: no method matching ^(::Pair{String,Int64}, ::Int64)

我也尝试过使用 NamedTuple,但这似乎没有用,因为它对元组中元素的顺序很敏感,并且它们的名称与函数参数名称不匹配:

julia> t = (x=3, z=7, y=5)
julia> f(t...)
(9, 49, 25)

我相信有办法做到这一点。是否尝试使用错误的类型来执行此操作?在 python 中,我正在寻找的内容如下所示:

>>> def f(x=10, y=10, z=10):
...     return x**2, y**2, z**2
>>> d = {'x':3, 'z':7, 'y':5}
>>> f(**d)
(9, 25, 49)

最佳答案

首先,由于您希望参数的名称很重要(关键字参数),因此您需要在函数定义中使用 ;:

f(;x=10, y=10, z=10) = x^2, y^2, z^2

其次,你应该使用字典,其中的键是Symbol:

d = Dict(:x=>3, :z=>7, :y=>5)

第三,你想通过在 ; 之后展开来表明你正在展开关键字参数:

f(;d...)
# giving the result (9, 25, 49)

关于python - Julia:将 Dict 项作为参数传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901830/

相关文章:

python - python 中的图形图上有很多边

python - 简单的python oo问题

c++ - C++ 中的成员与方法参数访问

macos - 如何在 Applescript 中调用 Automator 变量?

Python - 空白范围默认为预设范围

python - 删除带有条件的列表中的字典

python - 使用 BeautifulSoup 创建 XML 文档

python - 使用python在azure函数中进行更新的rest api

function - 如何以或方式组合两个 bool 函数?

c - 如果从函数返回,如何获取结构数组中的元素数? +返回时如何处理内存泄漏?