在许多项目中,我发现自己非常频繁地将变量分配给dict,其中变量的名称是键,变量的值是dict中的值。例如:
def create_results_dict(age, sex, ...):
res = {}
res['age'] = age
res['sex'] = sex
...
return res我想知道怎样才能(就执行速度而言)动态/编程地完成这些任务呢?也就是说,这样就不需要手动编写所有的作业了(在我的例子中,第3-5行)。
编辑:参数只是一个或多个位置或命名参数,即具有名称和值的变量。我想,从根本上说,问题是,我能否以编程方式接收参数/变量的名称(从传递给函数的参数列表中)?
发布于 2019-10-19 10:30:07
使用locals的简单方法
def create_results(age, sex, marital_status = "single"):
return {k:v for k, v in locals().items() if not k.startswith('__')}
res = create_results(34, "male")
print(res)输出:
{'marital_status': 'single', 'sex': 'male', 'age': 34}发布于 2019-10-19 10:28:08
def create_results_dic(age, sex, time, name, country):
args = create_results_dic.__code__.co_argcount
items = create_results_dic.__code__.co_varnames
res = {}
for x in items[:args]:
res[x] = eval(x)
return res如果您不介意使用非常不安全的eval(),这是一个解决方案。它迭代范围内的第一个args变量,其中args是传递给函数的args数。它使用每个arg作为键的名称,并使用eval获取该变量的值。
当然,这是假定所有通过的arg都要添加到dict中。
https://stackoverflow.com/questions/58462657
复制相似问题