从csv文件,列表,字典创建库存数据

时间:2012-01-28 19:33:07

标签: python file list stocks

我的库存程序输入如下

'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(一天结束)数据 在股票市场收盘时,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

也许可以成为一些pythonic和一点点冗长的东西。

1 个答案:

答案 0 :(得分: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