gpt4 book ai didi

python - 简化 if 条件 when .get return None

转载 作者:太空宇宙 更新时间:2023-11-04 07:26:48 24 4
gpt4 key购买 nike

是否可以简化这个:

def method(self, **kwargs):
if kwargs.get('profile_id') is None:
kwargs['profile_id'] = 'something1'
if kwargs.get('status') is None:
kwargs['status'] = 'something2'
if kwargs.get('account_type') is None:
kwargs['account_type'] = 'something3'
if kwargs.get('external_account_id') is None:
kwargs['external_account_id'] = 'something4'
if kwargs.get('vendor') is None:
kwargs['vendor'] = 'something5'
if kwargs.get('created_timestamp') is None:
kwargs['created_timestamp'] = 'something6'

return ClassOne.objects.create(**kwargs)

这行得通,但我只是好奇是否有更优雅的东西。我正在考虑做这样的事情:

kwargs['profile_id'] = kwargs.get('profile_id') or 'something1'

最佳答案

.get() 有一个可选的第二个参数,这是默认值。

kwargs['profile_id'] = kwargs.get('profile_id', 'something1')

此外,除了在 if 语句中调用 get(),您还可以使用

if 'profile_id' not in kwargs:

请注意,这些解决方案不会替换字典中显式的 None 值。

您可以为所有字段使用默认值字典,然后合并它们。

defaults = {"profile_id": "something1", "status": "something2", ...}
kwargs = {**defaults, **kwargs}

参见 How to merge two dictionaries in a single expression?

关于python - 简化 if 条件 when .get return None,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979915/

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