Проблема проста: у меня есть файл CSV с четырьмя столбцами, который я хотел бы оценить в первом столбце, и сделать это в словаре в моем сценарии python. Я не хочу добавлять значения в словарные даты завершенных задач.Как создать динамические словари в Python с использованием CSV-файла
Данные CSV для этого можно найти в файле с именем VC.csv, например этого:
24M Technologies,Series A,8/19/10
24M Technologies,Grant,8/16/10
2B Energy,Private Equity,3/18/14
2B Energy,Series B,3/18/14
2B Energy,Unattributed VC,5/1/08
3GSolar Photovoltaics,Series A,12/17/12
3sun Group,Growth Equity,3/3/14
3Tier Group,Series C,11/17/08
Конечный результат я хотел бы иметь словари, которые, как это, когда я распечатать их.
Например
>>> print 3TierGroup
>>>
>>>{'company': '2B Energy', 'Private Equity': '3/18/14', 'Series B': '3/18/14', 'Unattributed VC': '05/01/08'}
Где моя проблема пытается петлевым корыто и добавить больше к уже определенному словарю. Вместо добавления я предполагаю, что я воссоздаю и переписываю цикл каждый проход. В результате я получаю {'company': '2B Energy', 'Private Equity': '3/18/14'}
Мне нужна последняя строка моего кода, чтобы проверить, присутствует ли словарь уже; если это так, он добавит к нему дополнительные круглые даты.
Вот мой код ...
import csv
companyList =[]
transactionDates=[]
dictNames=[]
def fileNameCleaner(namer):
namer = namer.replace(' ', '')
namer = namer.replace(',','')
namer = namer.replace('-','')
namer = namer.replace('.','')
namer = namer.replace('_','')
namer = namer.replace('@','')
namer = namer.replace('&','')
return namer
with open('VC.csv', 'rb') as rawData:
timelineData = csv.reader(rawData, delimiter=',', quotechar='"') # Open CSV file and snag data
for line in timelineData: # Run through each row in csv
companyList.append(fileNameCleaner(line[0])) # Create list and remove some special charcters
companyList = list(set(companyList)) # Remove duplicates and Sort
for companyListRow in companyList:
with open('VC.csv', 'rb') as rawDataTwo:
timelineDataTwo = csv.reader(rawDataTwo, delimiter=',', quotechar='"')
for TList in timelineDataTwo:
company = TList[0]
finRound = TList[1]
tranDate = TList[2]
if companyListRow == fileNameCleaner(TList[0]):
companyListRow = {'company':TList[0], finRound:tranDate }
print companyListRow
Я думаю, что такие данные будут лучше всего представлены и запрошены в базе данных SQL (думаю, SQLite), так как типы финансирования (seriesA, seriesB и т. Д.) Будут повторяться часто и использовать много ненужного хранилища. Кроме того, чтобы запросить данные, выяснив, какое финансирование, в какой последовательности лучше всего будет использоваться в базе данных SQL (одна таблица для компаний, одна для типов финансирования, одна для дат с иностранными ключами, являющимися компанией и типом финансирования). – roadrunner66