【问题标题】:python passing dictionary parameter with key [closed]python用键传递字典参数[关闭]
【发布时间】:2026-01-16 07:00:02
【问题描述】:

我想使用如下字典进行函数调用:

valueattime(simulaton_01['Temperature_05'], 20)

但我总是遇到以下函数的语法错误

def valueattime(experiment[key], time):
    ...

它适用于简单的参数。但是对于autocompletion 而言,以字典形式传递参数会很棒。

有什么想法吗?

【问题讨论】:

  • def valueattime(temperature, time): ...

标签: python function dictionary parameter-passing


【解决方案1】:

您无需更改函数签名即可直接从字典中传递参数:

def valueattime(temperature, time):
    ...

valueattime(simulation_01['temp_05'], 20)  # this works just fine

Python 将首先运行simulation_01['temp_05'] 来检索值,并将其作为temperature 传递给函数。

【讨论】:

    【解决方案2】:

    您应该将其作为常规参数传递:

    def valueattime(temp, time):
        pass
    
    a = {'some_key': 'some_value'}
    
    valueattime(a['some_key], 20)
    

    这行得通!

    要向函数提供字典项,您可以使用字典推导:

    new_dict = {k: valueattime(v) for k, v in a.iteritems()}
    

    【讨论】:

    • 谢谢!现在我理解了函数调用!但我必须弄清楚,如何在函数 valueattime 中使用字典“a”的其他键。
    • @Martin_K 希望对您有所帮助!
    【解决方案3】:

    记住它是所有对象...

    def valueattime(temp, time) 
    

    定义一个采用两个输入参数的方法,两个由名称引用的对象temptime

    simulation_01['temp_05'] 返回一个对象,所以像这样调用你的方法:valueattime( simulation_01['temp_05'], 20 ) 应该是你要找的

    【讨论】:

    • 谢谢...它可以工作(但是;-))...在函数valueattime 内我想对simulation_01 的其他元素进行一些操作,例如numpy.where(simulation_01['mdot_01'] == 0)。但我认为这是不可能的?
    • 其实应该可以的