从字典中删除混合数据类型的空值和空对象
2020-02-24
85
如何清理包含各种数据类型的字典,包括空值、空列表、字典等。例如
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: object of type 'bool' has no len()
是否有解决方案可以根据
type(v) is bool
制定第二个条件?
编辑:我发现我在使用解决方案时遇到的问题是由于数据的结构造成的,因此提出了一个单独的问题来解决这个问题。
2个回答
你可以试试这个。
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}
Ch3steR
2020-02-24
怎么样
refined = {k:v for k, v in processed.items() v is not None and (type(v) not in (list, dict) or len(v) > 0)}
Cedric Druck
2020-02-24