gpt4 book ai didi

python - 从参数中选择所有非 None 元素并将它们放在 python 字典中的优雅方法是什么?

转载 作者:行者123 更新时间:2023-11-28 19:45:03 27 4
gpt4 key购买 nike

def function(varone=None, vartwo=None, varthree=None):
values = {}
if var1 is not None:
values['var1'] = varone
if var2 is not None:
values['var2'] = vartwo
if var3 is not None:
values['var3'] = varthree
if not values:
raise Exception("No values provided")

有人可以建议一种更优雅的 pythonic 方法来完成放置非空命名变量并将它们放入字典中吗?我不希望将值作为字典传递。 “值”的键名很重要,必须保持原样。 “varone”的值必须进入 var1,“vartwo”必须进入 var2 等等;谢谢。

最佳答案

你可以使用kwargs:

def function(*args, **kwargs):
values = {}
for k in kwargs:
if kwargs[k] is not None:
values[k] = kwargs[k]
if not values:
raise Exception("No values provided")
return values

>>> function(varone=None, vartwo="fish", varthree=None)
{'vartwo': 'fish'}

使用这种语法,Python 无需显式指定任何参数列表,并允许函数处理它们想要的任何旧关键字参数。

如果您专门寻找键 var1 等而不是 varone 您只需修改函数调用:

>>> function(var1=None, var2="fish", var3=None)
{'var2': 'fish'}

如果你想变得非常圆滑,你可以使用列表理解:

def function(**kwargs):
values = dict([i for i in kwargs.iteritems() if i[1] != None])
if not values:
raise Exception("foo")
return values

同样,您必须更改参数名称以与输出键一致。

关于python - 从参数中选择所有非 None 元素并将它们放在 python 字典中的优雅方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13097764/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com