【问题标题】:creat stock data from cvs file, list, dictionary从 csv 文件、列表、字典创建股票数据
【发布时间】:2012-01-28 19:33:06
【问题描述】:

我的股票程序输入如下

'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和不那么冗长是可以的。

【问题讨论】:

  • 这是作业吗?是 Python 课程吗?如果是,你的教授真的认为你可以在 python 中声明变量吗?
  • Tried m = q[0] ## that's 'ACC' m 变成了一个字符串,正如我所说的“INMUTABLE”,所以如果我从一个字符串开始,我如何在我的数据库中添加更多数据m 将其作为字符串启动。因此添加 dat1.insert(1,m) 将引发 INMUTABLES 异常。如果这是关于学校的问题,我的问题将是 List2[1,1,1,1,1,1,1 ], List2[2,2,2,2,2} 的输出为 List {1.1.2.1.1.1.2.2.1.1.1.1.2.2.2.2} 或一些在这里大多数人认为相关的“真实”世界应用程序。在众多例子中,我只找到了一个你可能会说是现实世界问题的例子。

标签: python file list stocks


【解决方案1】:

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

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

【讨论】:

  • 谢谢 rob 理想情况下想给我们一个带有 [name.stk1,stk2,stk3........stk?] 的数据库标题,这将用作字典键。数据库键对于搜索文件或更新并不重要。必要的是程序可以访问每天的条目。这些条目将用于各种公式进行处理。所有处理都按顺序通过列表,直到到达 EOF。重要的是 stk1[3] > stk5[3] 或者一些公式,然后写成 (reportx) 。
  • 我的代码完全符合您的问题要求。如果你想搜索日期,我会有一个字典,其中第一个键是名称,第二个键是日期。但是你真的应该更清楚,现在这只是一些关于所谓的“现实世界”编程的漫谈。
猜你喜欢
  • 2015-09-16
  • 2022-01-14
  • 2021-02-19
  • 2016-08-19
  • 1970-01-01
  • 2016-09-03
  • 2011-10-08
  • 2012-12-15
相关资源
最近更新 更多