这段Python代码怎么优化?

这段Python代码怎么优化?

originData = { 'a': None, 'b': None, 'c': 5, list: [{ 'a': 1, 'b': None}], dict: { 'a': 1, 'b':None}}

def remove_none(data):

if type(data) == dict:

for k in list(data.keys()):

if type(data[k]) == dict or type(data[k]) == list:

remove_none(data[k])

elif data[k] == None:

del data[k]

elif type(data) == list:

for v in data:

if type(v) == dict or type(v) == list:

remove_none(v)

elif v == None:

data.remove(v)

IDE报复杂度过高,请问要如何优化呢?
函数的目的是去除字典originData中的None值,Python版本是3.6


回答:

如果是我,应该会这么写:

originData = { 'a': None, 'b': None, 'c': 5, 'list': [{ 'a': 1, 'b': None}], 'dict': { 'a': 1, 'b':None}}

def remove_none(data):

if isinstance(data, dict):

return {

k: remove_none(v)

for k, v in data.items()

if v is not None

}

elif isinstance(data, list):

return [

remove_none(v)

for v in data

if v is not None

]

else:

return data

print(remove_none(originData))

不做就地修改,利用字典和列表推荐简化程序处理逻辑。

想知道编写优雅Python代码的秘密?请关注我的专栏:Python源码深度剖析 !


回答:

首先不能在 循环时 对列表进行remove

以上是 这段Python代码怎么优化? 的全部内容, 来源链接: utcz.com/a/164301.html

回到顶部