我有一个收集一周内生成的报告并合并收集以消除相同报告的流程。
我编写了一个函数,通过查找具有相同索引的报告来识别相同的报告,然后排除所有相同的报告,然后继续前进。虽然它适用于 5000-10,000 份报告,但处理 50,000 多份报告开始需要大量时间,随着时间的推移,这种情况将越来越普遍。
如果我可以先发制人地消除报告并避免这一步,那就太好了,但是生成报告的过程不允许这样做。所以,我想找到一种方法让这个或类似的功能更有效。
代码如下:
def report_diff_index(self,dnc_data,folders):
master_report_dict, master_val_dict = self.report_orderer(folders)
sorts = self.report_sorter(dnc_data,master_report_dict)
keys = [k for k in sorts.keys()]
consolidated_sorts = keys
print('Original Report Size: ', len(consolidated_sorts))
for k in keys:
if k in consolidated_sorts:
for j in keys[keys.index(k)+1:]:
if j in consolidated_sorts:
if len(list(set(sorts[k].index).symmetric_difference(sorts[j].index))) == 0:
consolidated_sorts.remove(j)
print('Consolidated Report Size: ', len(consolidated_sorts))
consolidated_report = {}
consolidated_val = {}
for s in consolidated_sorts:
consolidated_report[s] = master_report_dict[s]
consolidated_val[s] = master_val_dict[s]
return consolidated_report, consolidated_val