gpt4 book ai didi

python - 一行接收多个函数输出

转载 作者:行者123 更新时间:2023-11-28 22:11:19 25 4
gpt4 key购买 nike

假设我有多个函数:

type = {'a', 'b', ..., 'z'}
f={}
f['a'] = some func_a...
f['b'] = some func_b...
...
f['z'] = some func_z...

现在我想得到它们的输出

output = {}
for t in type:
output[t] = f[t](input)

我想知道是否有任何方法可以以不同的方式使用循环在一行中完成此操作,例如

[output[t] for t in type] = [f[t](input) for t in type]

当然,这是行不通的。那么有什么有效的方法吗?

最佳答案

你想要一个 dictionary comprehension .它的工作方式就像列表推导式,但不是使用单个表达式来形成值,而是提供两个表达式来生成键和值:

output = {t: f[t](input) for t in type}

字典推导产生一个新的字典对象;不需要或使用初始 output = {} 行。

我只是迭代 f 的项目,因为它已经有了我们需要的键:

output = {t: func(input) for t, func in f.items()}

作为旁注,不要对所有 f 函数使用单独的赋值,只需使用一个字典定义:

f = {
'a': some_func_a,
'b': some_func_b,
# ...
'z': some_func_z,
}

type 也不是变量的好名字,因为它掩盖了 built-in function you may sometimes want to use .您不需要单独创建该集合,因为 f 的迭代会为您提供相同的 key ,或者您可以使用 set(f) 创建集合副本,或 f.keys(),得到 dictionary view object over the keys of f ,它的作用就像一个集合,但它是“实时的”,因为对 f 的更改会反射(reflect)在其中。

关于python - 一行接收多个函数输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55811013/

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