【问题标题】:Removing nulls and empty objects of mixed data types from a dictionary从字典中删除混合数据类型的空值和空对象
【发布时间】:2020-06-08 09:52:21
【问题描述】:

如何清理包含各种空值和空列表、字典等数据类型的字典。例如

raw = {'key': 'value', 'key1': [], 'key2': {}, 'key3': True, 'key4': None}

收件人:

refined = {'key': 'value', 'key3': true}

由于字典中数据类型的混合性质,使用:

refined = {k:v for k,v in processed.items() if len(v)>0}

抛出一个

TypeError: 'bool' 类型的对象没有 len()

有没有基于type(v) is bool的第二个条件的解决方案?

编辑:我发现我在使用解决方案时遇到的问题是数据结构的结果,因此提出了一个单独的问题来解决这个问题。

【问题讨论】:

    标签: python json python-3.x dictionary


    【解决方案1】:

    你可以试试这个。

    refined={k:v for k,v in raw.items() if v or isinstance(v,bool)}
    

    raw={'key': 'value',
     'key1': [],
     'key2': {},
     'key3': True,
     'key4': None,
     'key5': False}
    refined={k:v for k,v in raw.items() if v or isinstance(v,bool)}
    #{'key': 'value', 'key3': True, 'key5': False}
    

    【讨论】:

      【解决方案2】:

      怎么样

      refined = {k:v for k, v in processed.items() v is not None and (type(v) not in (list, dict) or len(v) > 0)}
      
      

      【讨论】:

        猜你喜欢
        • 2020-06-09
        • 1970-01-01
        • 1970-01-01
        • 2021-01-04
        • 1970-01-01
        • 2018-11-14
        • 2020-03-18
        • 2015-01-18
        • 1970-01-01
        相关资源
        最近更新 更多