我有一个非常大的项目列表(10M +),必须放在一个包含三列的项目中(Item_ID,Item_name,Item_count)
我尝试过不同的数据库实现(MySQL和sqlite,python shelve和我自己的平面文件实现),但问题总是一样的:表上的行越多,需要的查找操作就越多(对于一个10,000行的表,至少需要10,000 * 10,000次查找以下10,000个项目。
对数据库建立索引可能听起来不错,但我的理解是索引是在插入大量数据后完成的,而不是每次插入都更新。
那么,我们怎么能按照描述的方式将如此大量的项目添加到表中呢?
答案 0 :(得分:0)
您可以使用set()来检查该项目是否已在列表中 我假设你有一个列表列表(w = [[id,name,count],[id,name,count],..])
r=[e[1] for e in list] <--- this will create a new list that only contains the names
if(len(set(r+item[1]))== len(set(r))){ <-if this is true then the item is on list
list[list.index(item)][countIndex]+= 1 <-- count +1
list[list.index(item)][idindex] <-- to retrieve id
}else{
list=list+[id,item-name,count] <-- this will add the item
}
如果你的数据库上的列表相同,只需使用get查询并设置信息。
设置ID,您可以搜索最后一项ID并设置+1,如此
list=list+[list[len(list)][id]+1,item-name,count]