在一个lin中接收多个功能输出

2024-04-25 06:48:10 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有多个函数:

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]

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


Tags: 方法函数inforinputoutputtype方式
1条回答
网友
1楼 · 发布于 2024-04-25 06:48:10

你想要一个dictionary comprehension。它的工作原理类似于列表理解,但不是使用单个表达式来形成值,而是提供两个表达式来生成键和值:

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

dict comprehension生成一个新的dictionary对象;不需要或不需要初始的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的迭代会给您相同的键,或者您可以使用set(f)创建一个集副本,或者f.keys()来获得一个dictionary view object over the keys of ^{},它的行为就像一个集,但是它是“活的”,因为对f的更改会反映在其中。你知道吗

相关问题 更多 >