python - 使用字典中参数的所有组合评估函数

标签 python function dictionary arguments

我想使用 numpy 包来评估字典中给出的所有可能的参数组合(可能不同数量)的函数。

args1 = {'a' : [1, 2, 3], 'b' : [6, 7]}
args2 = {'a' : [1, 2, 3], 'b' : [6, 7], 'c' : [5, 4}


def fun(a, b, c = 1):
    return a + b + c

# What I want to automate:
fun(args1['a'][0], args1['b'][0])
fun(args1['a'][1], args1['b'][0])
.
.
.
fun(args2['a'][2], args2['b'][1], args2['c'][0])
fun(args2['a'][2], args2['b'][1], args2['c'][1])

有没有一种优雅的方式来做到这一点?我正在考虑将“args”转换为所有字典组合的列表(无法理解如何做到这一点......也许通过字典理解?),然后使用map()。或者也许 np.frompyfunc 可以工作,但我找不到转换字典的方法......

最佳答案

一种方法是使用itertools.product生成组合

from itertools import product

args1 = {'a': [1, 2, 3], 'b': [6, 7]}
args2 = {'a': [1, 2, 3], 'b': [6, 7], 'c': [5, 4]}


def fun(a, b, c=1):
    return a + b + c


for pair in product(*args1.values()):
    res = fun(**dict(zip(args1, pair)))
    print(res)

输出

8
9
9
10
10
11

或者作为替代方案,只要字典的键与参数的(插入)顺序相同:

for pair in product(*args1.values()):
    res = fun(*pair)
    print(res)

关于python - 使用字典中参数的所有组合评估函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69665378/

相关文章:

php - 为什么人们更喜欢 call_user_func_array 而不是常规的函数调用?

python - 目录词典

python - 最佳替代数据结构以改善由于字典大小而导致的运行时间?

python - 与此等效的 MySql Update 是什么?

r - 绘制函数数据

python - 我如何告诉 PyLint "it' 是一个变量,而不是一个常量“来停止消息 C0103?

node.js - 将node.js代码封装在函数中

ios - 如何使用字典构建以下复杂结构?

python - 如何修复 "Could not install packages due to an EnvironmentError: [WinError 123]"?

python - 如何使用 wxpython 合并(连接)两个 wx.bitmap?