Я работаю над методом чтения данных из input.csv
и обновления столбца stock
в output.csv
на основе id
продукта. Это шаги, над которыми я работаюпрямо сейчас:
1. Считайте информацию о продукте из input.csv
в input_data = []
, что вернет список OrderedDict.
input_data
в настоящее время выглядит следующим образом:
[OrderedDict([('id', '1'), ('name', 'a'), ('stock', '33')]),
OrderedDict([('id', '2'), ('name', 'b'), ('stock', '66')]), OrderedDict([('id', '3'), ('name', 'c'), ('stock', '99')])]
2. Считать текущую информацию о продукте из output.csv
в output_data = []
, которая имеет ту же схему, что и input_data
3. Выполните итерацию по input_data
и обновите столбец stock
в output_data
на основе информации о запасах в input_data
. Какой лучший способ сделать это?
-> Важным упоминанием является то, что в input_data
могут быть некоторые идентификаторы, которые существуют в input_data
, но не существуют вoutput_data
.Я бы хотел обновить акции для id
s, общих для input_data
и output_data
, и "новые" id
s, скорее всего, будут записаны в новый csv.
Я думал о чем-то вроде (это не настоящий код):
for p in input_data:
# check if p['id'] exists in the list of output_data IDs (I might have to create a list of IDs in output_data for this as well, in order to check it against input_data IDs
# if p['id'] exists in output_data, write the Stock to the corresponding product in output_data
# else, append p to another_csv
Я знаю, это выглядит довольно грязно, я спрашиваю о том, чтобы найти логичный способ подойти к этой миссии, не тратя впустуюслишком много времени на вычисленияДлина файлов, о которых идет речь, будет, вероятно, 100 000 строк, поэтому производительность и скорость будут проблемой.
Если мои данные из input_data
и output_data
имеют значение list
из OrderedDict
,Каков наилучший способ проверить id
в input_data
и записать stock
в продукт с точно таким же id
в output_data
?