我有一个类似的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中解决这个问题的最有效方法是什么?
答案 0 :(得分:1)
我会创建第三个数据结构(python dict,或数据库表或其他)。
数据结构键应该是名称(假设名称是唯一的)。
此“名称”键指向的值应为最低价格。
每次插入新书或更新图书价格时,请在第三个数据结构中查找最低价格,如果低于最低价格,请设置新的最低价格。
不要忘记,如果您删除图书或提高价格,请务必更新最低要求。 (你可以添加另一列,这样每本书都有一个布尔“当前最小值”。然后在价格上涨时你只需要更新最小值,如果这是真的。
问题是,当您删除旧的最小值时,您需要找到下一个最佳最小值。
这是拥有heapq
的好地方python在这里有一个很好的heapq实现: http://docs.python.org/library/heapq.html
否则,您必须循环遍历所有值以在每次价格上涨时找到新的最小值,或者您必须每次存储5个最佳价格,比如说。
玩得开心:)
答案 1 :(得分:0)
这一切都取决于您正在处理的数据量。如果金额不是太高,那你正在做的就好了。