这段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