我有下面的代码来创建一个ItemID和其他功能的列表,这些功能从csv创建其他列表。我试过编写一个函数来循环,每次向其他列表添加一行(为每个ItemID添加一个新的price行),而不是每个循环都创建完整的列表。你知道吗
def Main(filename1, filename2):
with open(filename1, "r") as csv1, open(filename2, "r") as csv2:
csvReader1 = csv.DictReader(csv1)
csvReader2 = csv.DictReader(csv2)
ItemIDList = []
for row1, row2 in zip(csvReader1, csvReader2):
ItemIDList.append((row2["ItemId"]))
return ItemIDList
def buildObject(ItemIDList):
for row in ItemIDList: getPrice(filename1, filename2)
for row in ItemIDList: NameList = getName(filename1, filename2)
def getPrice(filename1, filename2):
with open(filename1, "r") as csv1, open(filename2, "r") as csv2:
csvReader1 = csv.DictReader(csv1)
csvReader2 = csv.DictReader(csv2)
priceList = []
for row1, row2 in zip(csvReader1, csvReader2):
csvPVList.append((row2["Price"]))
return priceList
Main构建ID列表,getPrice是我试图重写的函数,每次只从buildObject中的csv every循环添加一行。你知道吗
这是一个设计问题。从磁盘读取文件是一项昂贵的操作,只需执行一次。在内存中加载两个csv文件来压缩它们并不是高效的。所以你应该:
如果使用单个列表,则代码可以(高度简化,无错误处理):
或者如果使用namedtuples:
相关问题 更多 >
编程相关推荐