Я использую csv.DictReader
для чтения данных из файла CSV. Когда читатель итерации, он дает словарей с ключами, взятых из заголовка CSV и значения для каждой строки:Сохранение накладных расходов памяти с помощью DictReader
with open(filename) as h:
data = csv.DictReader(h)
for row in data:
# row is dict
Каждая строка представляет собой словарь с keys, и каждая строка имеет точно такие же ключи. В случае, когда значения являются целыми числами, а ключи (строки) длинны, клавиши занимают больше места в памяти, чем значения.
Можно ли перебирать строки так, чтобы клавиши каждой строки указывали на то же самое экземпляр ключей, поэтому я сохраняю пространство памяти в строке?
Обратите внимание, что я не знаю ключей заранее - они взяты из заголовка CSV. В противном случае я мог бы использовать namedtuple
или __slots__