首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式将多个参数及其名称作为键添加到dict的最快方法

以编程方式将多个参数及其名称作为键添加到dict的最快方法
EN

Stack Overflow用户
提问于 2019-10-19 10:19:04
回答 2查看 57关注 0票数 1

在许多项目中,我发现自己非常频繁地将变量分配给dict,其中变量的名称是键,变量的值是dict中的值。例如:

代码语言:javascript
复制
def create_results_dict(age, sex, ...):
    res = {}
    res['age'] = age
    res['sex'] = sex
    ...
    return res

我想知道怎样才能(就执行速度而言)动态/编程地完成这些任务呢?也就是说,这样就不需要手动编写所有的作业了(在我的例子中,第3-5行)。

编辑:参数只是一个或多个位置或命名参数,即具有名称和值的变量。我想,从根本上说,问题是,我能否以编程方式接收参数/变量的名称(从传递给函数的参数列表中)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-19 10:30:07

使用locals的简单方法

代码语言:javascript
复制
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)

输出:

代码语言:javascript
复制
{'marital_status': 'single', 'sex': 'male', 'age': 34}
票数 2
EN

Stack Overflow用户

发布于 2019-10-19 10:28:08

代码语言:javascript
复制
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中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58462657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档