-
看起来这两个解决方案的时间复杂度相同,但在python中,实际运行时间可能不同。
-
构建一个有理解力的新字典是编写代码的最愚蠢的方式,但构建整个字典会花费更多的时间
del
way在这两种情况下都表现良好。
-
抱歉我犯了很多错误。
测试代码
import timeit
def build_data():
return {f"{i}": f"{i}" for i in range(999)} | {"blank":""}
def build_half_blank_data():
return {f"{i}": f"{i}" for i in range(500)} | {f"{i}": "" for i in range(500,1000)}
def del_method(data):
for key in [key for key, value in data.items() if value == ""]:
del data[key]
return data
def build_method(data):
return {key: value for key, value in data.items() if value != ""}
def print_time(fun):
print(timeit.Timer(fun).timeit(100))
data = build_data()
print_time(lambda: del_method(data))
half_blank_data = build_half_blank_data()
print_time(lambda: del_method(half_blank_data))
data = build_data()
print_time(lambda: build_method(data))
half_blank_data = build_half_blank_data()
print_time(lambda: build_method(half_blank_data))
---del_method + data 0.006248708003113279 seconds ---
---del_method + half_blank 0.003282875000877538 seconds ---
---build_method + data 0.010706582997954683 seconds ---
---build_method + half_blank 0.008546333003323525 seconds ---