0

我有一个 csv 文件,它是这样的:

 book_store_id  book_price   name

 1              200.0        foo
 1              320.0        bar
 2              220.0        foobar
 2              280.0        foo

所以..这是一个巨大的清单..

现在我试图找出如果输入是“foo”

那么既然书店 id 1 有“foo”标记的最低价格,那么我想返回“book_store”1

现在我这样做是创建一个倒排索引,它返回类似

foo:1,2 
bar:1
foobar:2

依此类推,然后是一本单独的字典,我在其中维护书店中的图书价格..但这是解决此问题的最佳方法吗?

在python中解决这个问题的最有效方法是什么?

4

2 回答 2

1

我将创建第三个数据结构(python dict,或数据库表或其他)。

数据结构键应该是名称(假设名称是唯一的)。

这个“名称”关键点的值应该是最低价格。

每次插入新书,或者更新一本书的价格,在第三个数据结构中查找书籍最低价格,如果低于最低价格,设置新的最低价格。

不要忘记,如果您删除一本书或提高其价格,请确保更新最低限度。(您可以添加另一列,以便每本书都有一个布尔值“是当前最小值”。然后在价格上涨时,如果这是真的,您只需要更新最小值。

问题是,当您删除旧的最小值时,您需要找到下一个最佳最小值。

这是拥有 heapq 的好地方

python在这里有一个很好的heapq实现:http : //docs.python.org/library/heapq.html

否则,您必须遍历所有值以在每次价格上涨时找到新的最小值,或者您必须每次存储 5 个最佳价格。

玩得开心 :)

于 2012-05-07T01:20:00.377 回答
0

这完全取决于您正在处理的数据量。如果金额不是太高,那么你正在做的就可以了。

于 2012-05-07T11:34:24.237 回答