给我的一个大 csv 有一个大的飞行数据表。我为帮助解析它而编写的一个函数迭代了 Flight ID 的列,然后返回一个字典,其中包含每个唯一 Flight ID 的索引和值(按首次出现的顺序)。
字典 = { 索引:FID, ... }
这是对旧功能的快速调整,不需要担心列中的 FID 重复(几十万行之后......)。
现在,我让它迭代并按顺序比较每个值。如果一个值等于它后面的值,它会跳过它。如果下一个值不同,它将值存储在字典中。我将其更改为现在还检查该值之前是否已经出现,如果是,则跳过它。
这是我的代码:
def DiscoverEarliestIndex(self, number):
finaldata = {}
columnvalues = self.column(number)
columnenum = {}
for a, b in enumerate(columnvalues):
columnenum[a] = b
i = 0
while i < (len(columnvalues) - 1):
next = columnenum[i+1]
if columnvalues[i] == next:
i += 1
else:
if next in finaldata.values():
i += 1
continue
else:
finaldata[i+1]= next
i += 1
else:
return finaldata
它的效率非常低,并且随着字典的增长而减慢。该列有 520 万行,所以用 Python 处理这么多显然不是一个好主意,但我现在坚持使用它。
有没有更有效的方法来编写这个函数?