首页 > 解决方案 > 如果值是真实的,则将键,值添加到 dict

问题描述

我想构建一个字典,但只有在项目的值是真实的情况下才添加项目

我执行以下操作

my_dict = {
          "key1": convert_value("foo"), 
          "key2": convert_value(None), 
          "key3": convert_value(""),
          "key4": "bar",
          "key5": ""
          }

问题是,我根本不希望键在字典中,如果它的 convert_value() 是假的,例如 key2 和 key3,它们在使用 convert_value() 函数转换后都是空字符串。

生成的字典,原样,看起来像这样

{
 "key1": "foo", 
 "key2": "", 
 "key3": "",
 "key4": "bar",
 "key5": ""
}

但是我希望得到的 dict 就是这个

{
 "key1": "foo",
 "key4": "bar",
 "key5": "",
}

没有在转换后返回空值的 keys2 和 3。有什么办法可以直接在施工期间进行吗?

我不能使用 dict 理解,因为在添加之前并非所有值都通过 convert_value 函数(这些键可以有空值),事后删除它们似乎很浪费

编辑:我真正想要的类似于提供如下默认值

      "key2": convert_value("foo") or "default",

但不是使用默认值,而是完全删除/跳过这个键。那将是完美的。

标签: python-3.xdictionary

解决方案


您可以尝试模拟容器类型

class CustomDict(dict): 
    def __setitem__(self, key, item): 
        if item: 
            super().__setitem__(key, item)

a = CustomDict()
a['1'] = 1
a['2'] = 0
a # should show {'1': 1}

我发现了这个相关的问题


推荐阅读