После моего вопроса, представленного в последние несколько дней, у меня есть defaultdict, который содержит в каждой из строк запись продажи билета для идентификатора устройства или пассажира для продажи автобуса.Весь devicedict содержит все билеты, проданные за данный год, около 1 миллиона. Дефолт по умолчанию индексируется идентификатором устройства, который является ключом.Мне нужно знать среднюю задержку между датой покупки и фактической датой отправления для каждой покупки билета.Моя проблема в том, что я не могу извлечь каждую запись из словаря.
Так что devicedict содержит для каждого ключа devicedict [ключ] список из более чем 60 различных характеристик: date_departure, date_arrival и т. Д. В каждом поворотецикл, в котором я хочу обработать что-то вроде devicedict [deviceID] [область интересов], сделать что-то с ним и, например, извлечь среднюю задержку между каждой покупкой.
Я пытался использовать append и использовать вложенные массивы, но она не возвращает каждую отдельную запись сама по себе.
ValoresDias - это сумма задержек для каждого билета (дата покупки минус вылет) в секундах, деленная на day-86400, а ValoresTotalesDias - просто переменная приращения.Общая медианная задержка должна быть ValoresDias / ValoresTotalesDias для всех записей.
with open('Salida1.csv',newline='', mode='r') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=',')
#rows1 = list(csv_reader)
#print(len(rows1))
line_count = 0
count=0
for row in csv_reader:
key = row[20]
devicedict[key].append(row)
if line_count == 0:
print(f'Column names are {", ".join(row)}')
line_count += 1
else:
#print(f'\t{row[0]} works in the {row[20]} department, and was born in {row[2]}.')
#print(row['id'], row['idapp'])
#print(len(row))
#print(list(row))
mydict5ordenado.append(list(row))
line_count += 1
print(len(devicedict.keys()))
f = "%Y-%m-%d %H:%M:%S"
p = devicedict.keys()
for i in range(0,len(devicedict)):
mydict.append(devicedict[list(p)[i]])
print(mydict[i])
print("Los campos temporales:")
#print(mydict[i][4])
#print(mydict[i][3])
out1=datetime.datetime.strptime(mydict[i][4], f)
out2=datetime.datetime.strptime(mydict[i][3], f)
out3=out1-out2
valoresTotalesDias+=1
valoresDias+=out3.seconds/86400
#This is what i am trying to obtain for each record without hardcoding
#I want to access each field in the above loop
count1=len(devicedict['4ff70ad8e2e74f49'])
for i in range(0,count1):
mydict5.append(devicedict['4ff70ad8e2e74f49'][i])
print(len(mydict5))
for i in range (0,len(mydict5)):
print(mydict5[i][7])
print("Tipo de Bus:")
print(mydict5[i][16])
print(mydict5[i][14])
if (mydict5[i][16]=='P'):
preferente+=1
Mydict [i] должен содержать только одну строку записи, то есть одну продажу для каждого пассажира, а не всю запись.