我的Python字典性能有问题。
我必须读取一个包含许多x,y位置的文件,如果这样绘制它 看起来像一个圆圈,我必须通过一个特定的数字来调整这个圆圈的大小 边缘。如果Mydict有超过50000个项目,它会变慢。
Mydict就像{ (X,Y) : {value:1 ,value:2} ,}
Key是一个元组,值是另一个dict。
Mydict = get_data()
cut_num = 5 # cut size
# start remove x
max_group = tuple(map(max,*Mydict))
min_group = tuple(map(min,*Mydict))
X_max = max_group[0] - cut_num
X_min = min_group[0] + cut_num
remove_keys =[k for k in Mydict if k[0]> X_max or k[0]< X_min ]
for key in remove_keys:
del Mydict[key]
删除X值的速度大约只需1秒。
但我不知道如何以效率方式删除Y值。
我写了一个函数来得到Y Max,Min By X值:
def Get_Y_By_Xaxis(Mydict,X_value):
temp_dict = {k for k in Mydict if k[0] == X_value }
max_group = tuple(map(max,*temp_dict ))
min_group = tuple(map(min,*temp_dict ))
return (min_group[1],max_group[1])
然后开始删除Y值。我是这样做的
for i in range(X_min ,X_max+1 ):
limits = Get_Y_By_Xaxis(Mydict , i)
remove_keys =[k for k in Mydict
if (k[0] == i and k[1] > limits[0] - cut_num )
or (k[0] == i and k[1] < limits[1] + cut_num )]
for key in remove_keys:
del Mydict[key]
对于具有150000项
的字典,将花费大约60~70秒这段代码会变得更快还是我必须使用一些软件包来帮助我?