首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的非结构化变量是如何反应的?

Python中的非结构化变量是如何反应的?
EN

Stack Overflow用户
提问于 2020-03-09 22:09:27
回答 2查看 1.2K关注 0票数 0

我正在使用创建API。对于每个请求,我必须验证request.args或request.json并抛出错误,如果查询params或request body具有意外形式或不同的数据类型E 213E 114 to E 215

然后从请求体或查询params中提取几个条目。有许多这样的API,我需要从查询params、或request body中提取几个项,并使用以下值执行数据库函数:执行SQL查询以及从请求体E 229E 130查询参数E 231传递数据。

每次在request.args.get API视图函数中,我都必须对许多变量执行或request.json.get。

我只是在想,是否有更好的方法使这些项目在内存中可用,而不显式地将它们从字典中提取出来(类似于React中的反结构)。

我搜索了一下,发现确实有一种方法可以做到这一点,这是不可取的。https://stackoverflow.com/a/2955476/4626254

我只想知道有没有更好的方法去做。

EN

回答 2

Stack Overflow用户

发布于 2020-03-09 22:39:24

operator.itemgetter,它允许您一次检索多个项。(在语义上,它仍然从dict中提取每个值;但在语法上,它只是一个操作。)

代码语言:javascript
复制
from operator import itemgetter

keys = ['a', 'b']
d1 = {'a': 1, 'b': 2, 'c': 3}

get_a_and_b = itemgetter(*keys)  # equivalent to lambda d: (d['a'], d['b'])

values = get_a_and_b(d)  # KeyError if either a or b is missing, otherwise returns (1, 2)

d2 = dict(zip(keys, values))  # Build new "subdict" if desired.
票数 0
EN

Stack Overflow用户

发布于 2021-05-07 08:44:05

如果您想让代码更简洁,而不是一个接一个地从dict中获取每个值,那么不要键入相同的键两次才能将它们作为变量使用--然后创建一些辅助函数,将所需的值解压缩为函数参数或关键字参数(取决于它们是否必须是必需的或可以具有默认值),并将rest保持为**kwargs。例如:

代码语言:javascript
复制
params = {c: i for i, c in enumerate('abcd')}

def get_abcx_sum_and_rest(a, b, c=1, x=2, **kwargs):
    return sum((a,b,c,x)), kwargs

abcx_sum, rest_dct = get_abcx_sum_and_rest(**params)

Js es6语法不错,但遗憾的是,它在python中不可用。我认为,如果您需要使用dict的某些键进行操作,那么应该将这些操作括起来并将其命名为单独的函数时,情况可能就是这样。

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

https://stackoverflow.com/questions/60609011

复制
相关文章

相似问题

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