【发布时间】:2020-10-18 07:06:49
【问题描述】:
我为删除每个 Null 或空内容的任务编写了以下代码。该脚本有效,但我认为它根本不是“pytonish”。蟒蛇的方式是如何做到的?
def remove_empty_values(ret):
#ret is assumed eitehr dict or list
#recursively remove all key or list items which values is Null or empty string
if type(ret) == list:
empty_indexes=[]
i = 0
for index in ret:
if (ret[i] == None) or ((type(ret[i]) == str and ret[i] == '') or ((type(ret[i]) == unicode and ret[i] == '') or (( type(ret[i])==dict or type(ret[i])==list ) and len(ret[i]) ==0))):
empty_indexes.append(i)
else:
if (type(ret[i])==dict or type(ret[i])==list):
remove_empty_values(ret[i])
i = i + 1
for index in empty_indexes:
del ret[index]
elif type(ret) == dict:
empty_keys=[]
for key in ret:
if (ret[key] == None) or ((type(ret[key]) == str and ret[key] == '') or ((type(ret[key]) == unicode and ret[key] == '') or (( type(ret[key])==dict or type(ret[key])==list ) and len(ret[key]) ==0))):
empty_keys.append(key)
else:
if (type(ret[key])==dict or type(ret[key])==list):
remove_empty_values(ret[key])
for key in empty_keys:
del ret[key]
【问题讨论】:
-
你认为它不是“pythonish”吗?
-
检查
filter() -
@ScottHunter 好吧,它完成的任务太长了,for 循环,I = I +1,我用 C++ 开发,我觉得这是一个 C 风格的代码 :)
标签: python list dictionary recursion