Python 如何提高比较列表中字符串(数百万数据)的速度?
将城市和排序与文件进行比较的代码Python 如何提高比较列表中字符串(数百万数据)的速度?,python,python-3.x,performance,Python,Python 3.x,Performance,将城市和排序与文件进行比较的代码 for city in uniqueCity: file = open(city+".txt","a+") for data in salesData: if data[2] == city: file.write(",".join(data).replace(","," ")) file.write("\n") file.close() 由于算法比较慢,所以函数比较慢 如
for city in uniqueCity:
file = open(city+".txt","a+")
for data in salesData:
if data[2] == city:
file.write(",".join(data).replace(","," "))
file.write("\n")
file.close()
由于算法比较慢,所以函数比较慢 如前所述,对于每个
city
(循环len(uniqueCity)
次),它必须循环所有salesData
(len(salesData)
次),因此执行的比较总数是len(uniqueCity)*len salesData
。在这种情况下(city
是一个str
,我想),您可以做得更好,因为字符串是可散列的
groupedSalesData={city:[]对于uniqueCity中的城市}
对于salesData中的数据:
城市=数据[2]
如果城市位于groupedSalesData中:
groupedSalesData[城市].append(数据)
对于城市,groupedSalesData.items()中的数据项:
文件=打开(城市+“.txt”,“a+”)
对于数据项中的数据:
file.write(“,”.join(data.replace(“,”,”))
文件。写入(“\n”)
file.close()文件
如您所见,该算法的复杂性仅为
len(uniqueCity)+len(salesData)
(假设data
需要O(1)
时间进行复制,并且由于Pythondict
上的操作应该是O(1)
),哪一个更好。请编辑您的帖子并格式化代码。您是否尝试对其进行基准测试?它有多慢?不鼓励使用粗体文本。uniqueCity的内容是什么?uniqueCity的内容是包含非重复城市名称的集合。它是如何生成的?来自数据?(我欢迎任何建设性的批评,因此如果你对我的答案投了反对票,你可能还想留下一条评论,解释如何使答案更好,以便我可以改进我的答案)