我想创建一个 python 目录,其值将单独评估。
因此,例如,在以下非工作示例中,我定义
a = {'key1': 'value1', 'key2': 42, 'key3': foo(20)}
例如
def foo(max):
"""Returns random float between 0 and max."""
return max*random.random()
在处理我想要的dict之后
a_processes = {'key1': 'value1', 'key2': 42, 'key3': 12.238746374}
该示例不起作用,因为 key 的值key3
被立即评估,并且foo(20)
不可调用。它可以工作的方式是使用类似的东西
a = {'key1': 'value1', 'key2': 42, 'key3': foo}
但这里foo
会错过它的论点。处理此问题的一种方法是按以下方式定义字典
a = {'key1': 'value1', 'key2': 42, 'key3': [foo, 20]}
采用以下处理方案
a_processed = dict([k,process(v)] for k,v in a.items())
其中process
是一个有意义的函数,它检查它的参数是否是一个列表,或者第一个元素是否是一个可调用的,它会被剩余的参数调用。
我的问题是关于实现我的基本想法的更好方法/想法?