Python Don';如果dict';没有

Python Don';如果dict';没有,python,dictionary,Python,Dictionary,我的意见如下: kwargs = { "min": values.get("min"), "max: values.get("max"), } 但我不希望里面没有价值。所以当min或max为None时,我想跳过它 有没有比简单地做更好的方法 if values.get("min") is not None: #add to dict 我也尝

我的意见如下:

kwargs = {
            "min": values.get("min"),
            "max: values.get("max"),
        }
但我不希望里面没有价值。所以当min或max为None时,我想跳过它

有没有比简单地做更好的方法

if values.get("min") is not None:
#add to dict
我也尝试过这个方法,但这也不是一个好方法:

kwargs = {
            "min_hum": (values.get("min") if values.get("min") is not None),
            "max_hum": (values.get("max") if values.get("max") is not None),
        }
>>> {k: v for k, v in src.items() if v is not None}
{'min': 42}

你可以使用听写理解:

values = {'min': None, 'max': 6}
kwargs = {k: v for (k, v) in values.items() if v}
print(kwargs)
输出:

{'max': 6}
或者,如果还需要筛选关键帧,可以使用walrus操作符:

kwargs = {k: v for k in ('min', 'max') if (v := values.get(k)) is not None}

你可以使用听写理解:

values = {'min': None, 'max': 6}
kwargs = {k: v for (k, v) in values.items() if v}
print(kwargs)
输出:

{'max': 6}
或者,如果还需要筛选关键帧,可以使用walrus操作符:

kwargs = {k: v for k in ('min', 'max') if (v := values.get(k)) is not None}

您可以只包含这些值,然后在第二步中删除它们

>>> src = {"min": 42, "max": None}
>>> tgt = {"min_hum": src.get("min"), "max_hum": src.get("max")}
>>> tgt = {k: v for k, v in tgt.items() if v is not None}
>>> tgt
{'min_hum': 42}
。。。或者使用dict理解跳过它们(如果键不相同,可能需要键映射列表):

当然,如果
src
tgt
中的键相同,您可以使用第一种方法的第二步:

kwargs = {
            "min_hum": (values.get("min") if values.get("min") is not None),
            "max_hum": (values.get("max") if values.get("max") is not None),
        }
>>> {k: v for k, v in src.items() if v is not None}
{'min': 42}

您可以只包含这些值,然后在第二步中删除它们

>>> src = {"min": 42, "max": None}
>>> tgt = {"min_hum": src.get("min"), "max_hum": src.get("max")}
>>> tgt = {k: v for k, v in tgt.items() if v is not None}
>>> tgt
{'min_hum': 42}
。。。或者使用dict理解跳过它们(如果键不相同,可能需要键映射列表):

当然,如果
src
tgt
中的键相同,您可以使用第一种方法的第二步:

kwargs = {
            "min_hum": (values.get("min") if values.get("min") is not None),
            "max_hum": (values.get("max") if values.get("max") is not None),
        }
>>> {k: v for k, v in src.items() if v is not None}
{'min': 42}

也许这就是你的答案:

kwargs = {key: value for key, value in values.items() if value}


也许这就是你的答案:

kwargs = {key: value for key, value in values.items() if value}


您可以使用字典理解来删除之后的
None
值。您可以使用字典理解来删除之后的
None
值。如果v不是None,最好执行
,以不同时删除
0
False
列表末尾的
if v
将删除所有错误值(
False
0
、空字符串、空列表等),而不仅仅是
None
。相反,如果v不是None,您可能需要
如果v不是None,最好不要同时删除
0
False
列表末尾的
如果v
将删除所有错误值(
False
0
、空字符串、空列表等),不仅仅是
。相反,如果v不是None,您可能需要