Я пытаюсь написать сценарий для синтаксического анализа очень большого файла данных с информацией о местоположении и времени и хранить эту информацию в массиве (то есть списке списков), однако , по какой-то причине мой код записывает одни и те же номера в нескольких под списках.Python Числовая ошибка, возникающая в серии вложенных списков
# Import data from inputFile into list
with open(r"C:\..file.dat") as inputFile:
inputList = list(inputFile)
totalSegs = 775
totalPrds = 938
stressPrd = 1
segNum = 1
testList = []
masterList = []
while stressPrd <= totalPrds: #build a list of times
testList.append(0)
stressPrd += 1
while segNum <= totalSegs: #build a list of locations
masterList.append(testList) #list of time periods by location
segNum += 1
stressPrd = 1
segNum = 1
for inputItem in inputList: #read data from file and write to lists
if inputItem != '\n'
inputItem = inputItem.split()
if int(inputItem[3]) == int(segNum):
testVar = float(masterList[segNum - 1][stressPrd - 1])
testVar += float(inputItem[6])
masterList[segNum - 1][stressPrd - 1] = testVar
else:
segNum += 1
if segNum <= totalSegs:
testVar = float(masterList[segNum - 1][stressPrd - 1])
testVar += float(inputItem[6])
masterList[segNum - 1][stressPrd - 1] = testVar
else:
segNum = 1
stressPrd += 1
testVar = float(masterList[segNum - 1][stressPrd - 1])
testVar += float(inputItem[6])
masterList[segNum - 1][stressPrd - 1] = testVar
Что должно произойти в том, что данные в одном месте (segNum) с того же времени (stressPrd) суммируются и хранятся в подсписке организованного stressPrd, а затем этот список для данного местоположения по времени хранится segNum в родительском списке. Однако происходит то, что сценарий вместо этого суммирует все данные по всем местоположениям в течение заданного времени (stressPrd), и эта сумма сохраняется в каждом подсети местоположения.
Я попытался вставить некоторые заявления печати, чтобы отслеживать, что происходит с несколькими под-списками одновременно, и все они начинают подсчитывать одну и ту же сумму одновременно. Мои переменные segNum и stressPrd оба кажутся правильными, и, насколько я могу судить, мои инструкции If выполняются правильно, так что мне трудно понять источник проблемы.
В очень упрощенном примере результата я хочу:
Data:
Loc Time1 Time2
A 6 1
A 2 2
B 2 3
C 5 4
C 1 1
Result:
[[8,3],[2,3],[6,5]]
Спасибо заранее!