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)
时间进行复制,并且由于Python
dict
上的操作应该是
O(1)
),哪一个更好。

请编辑您的帖子并格式化代码。您是否尝试对其进行基准测试?它有多慢?不鼓励使用粗体文本。uniqueCity的内容是什么?uniqueCity的内容是包含非重复城市名称的集合。它是如何生成的?来自
数据
?(我欢迎任何建设性的批评,因此如果你对我的答案投了反对票,你可能还想留下一条评论,解释如何使答案更好,以便我可以改进我的答案)