在Python中是否有用于向字典添加可选键的简写?



我们经常有这样的函数:

def my_func(arg1, arg2, arg3=None, arg4=None):
params = dict(arg1=arg1, arg2=arg2)
if arg3:
params["arg3"] = arg3
if arg4:
params["arg4"] = arg4
response = requests.post("https://...", data=params)

被击中的端点将不满意参数中的键设置为None的值。它预计,如果arg3arg4是不需要的,它将不会出现在params

是否有一种构造参数字典的简写方式,使得每个可选参数不需要一个if语句?比

好看的东西:
params = (
dict(arg1=arg1, arg2=arg2)
| (dict(arg3=arg3) if arg3 else {})
| (dict(arg4=arg4) if arg4 else {})
)
def my_func(arg1, arg2, **kwargs):
optional_kwargs = ['arg3','arg4']
params = dict(arg1=arg1, arg2=arg2)
params.update({k:v for k,v in kwargs.items() if k in optional_kwargs})
response = requests.post("https://...", data=params)

就是我要做的…

您可以将所有内容添加到字典中,然后过滤出None值:

def my_func(arg1, arg2, arg3=None, arg4=None):
params = {k: v for k, v in dict(arg1=arg1, arg2=arg2, arg3=arg3, arg4=arg4).items() if v is not None}
...

相关内容

  • 没有找到相关文章

最新更新