создать данные о запасах из файла cvs, списка, словаря - PullRequest
0 голосов
/ 28 января 2012

Мои входные программы выглядят следующим образом

Данные 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.вставьте (1, M) каждый цикл обновления.Ребята, вы можете закодировать это, вероятно, в одну строку.На данный момент у меня более 30 строк, поэтому просмотр моего кода не имеет значения.Выше приведен пример некоторого простого ввода и желаемого результата.

Если вы решили заняться программированием в реальном мире, пожалуйста, оставьте его подробным.Объявите ваши переменные, затем заполните их и, наконец, используйте их ex.

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

Может быть, было бы неплохо быть чем-то напрасным и чуть менее многословным.

1 Ответ

0 голосов
/ 28 января 2012

Вы должны использовать словарь с именами в качестве ключей:

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.

...