2012-01-28 29 views
0

我的股票程序输入如下科瑞库存数据从CVS文件,列表,字典

“Sqin.txt”中读取数据,并为CVS文件

AAC,D,20111207,9.83,9.83,9.83,9.83,100 
AACC,D,20111207,3.46,3.47,3.4,3.4,13400 
AACOW,D,20111207,0.3,0.3,0.3,0.3,500 
AAME,D,20111207,1.99,1.99,1.95,1.99,8600 
AAON,D,20111207,21.62,21.9,21.32,21.49,93200 
AAPL,D,20111207,389.93,390.94,386.76,389.09,10892800 
AATI,D,20111207,5.75,5.75,5.73,5.75,797900 

输出是

dat1[] 
['AAC', ['9.83', '9.83', '9.83', '9.83', '100'], ['9.83', '9.83', '9.83', '9.83', '100']] 

DAT1 [0]为股票代码“ACC”用于查找和数据更新 DAT1 [1 ....?]是EOD(一天结束)数据 在股市收盘排爆数据将在每个更新周期的dat1.insert(1,M)处插入。 你可以在大概一行代码中进行编码。我的目前超过30行,所以看到我的代码是不相关的。以上是一些简单输入和所需输出的示例。

如果你决定采取一些现实世界编程请保持冗长。声明你的变量,然后填充它,最后使用它们。

M = [] 
M = q [0][3:] ## had to do it this way because 'ACC' made the variable M [] begin as a string (inmutable). So I could not add M to the data.-dat1[]- because -dat1[]- also became a string (inmutable strings how stupid). Had to force 'ACC' to be a list so I can create a list of lists -dat1- 

Dat1.insert(1.M) ## -M- is used to add another list to the master.dat record 

也许这将是确定一些什么Python的和一点点更简洁。

+0

这是功课?这是一个Python课程,如果是这样,你的教授是否真的认为你可以在python中声明变量? – geoffspear 2012-01-28 22:59:44

+0

尝试M = Q [0] ##这就是“ACC INMUTABLE‘所以,如果我开始了一个字符串我怎么添加更多的数据到我的数据库,当m启动它作为一个串” m正如我所说的变成了一个字符串’。所以加入dat1.insert(1米)将引发异常,并INMUTABLES。如果这是对学校,我的问题会是这样的列表2 [1,1,1,1,1,1,1],列表2 [2,2 ,2,2,2},其输出列表为{1.1.2.1.1.1.2.2.1.1.1.1.2.2.2.2},或者某个“REAL”世界应用程序,这里的大部分内容都是相关的。我只找到另一个例子在众人之中,你可能会说是一个真正的世界性难题。 – tsquare21 2012-01-29 00:52:08

回答

0

您应该使用字典的名称作为关键字:

import csv 
import collections 

filename = 'csv.txt' 

with open(filename) as file_: 
    reader = csv.reader(file_) 
    data = collections.defaultdict(list) 
    for line in reader: 
     # line[1] contains "D" and line[2] is the date 
     key, value = line[0], line[3:] 
     data[key].append(value) 

添加数据你做data[name].insert(0, new_data)。其中名称可以是AAC,值是数据列表。这将新数据放置在列表的开头,就像您在帖子中说的那样。

我会建议append而不是insert,它更快。如果您确实希望将数据添加到列表的开头,请使用collections.deque而不是list

+0

由于抢在理想情况下想我们数据库与头[name.stk1,STK2,STK3 ........ STK?],这将用作字典键数据库键对于搜索文件或更新不重要,程序可以访问每一天的条目,这些条目将被用在各种公式中进行处理,所有的处理都是依次通过列表直到达到EOF。重要的是stk1 [3]> stk5 [3]或者某个公式然后写(reportx)。 – tsquare21 2012-01-29 00:51:00

+0

我的代码完全符合你的要求。如果你想搜索日期,我会有一个字典的字典,第一个键是名字,第二个键是日期。但是你应该更加清楚,现在它只是对所谓的“现实世界”编程有些漫无边际。 – 2012-01-29 13:14:20