Поскольку у вас есть статический набор ключей для ваших словарей данных, namedtuple
из модуля collections
на самом деле будет лучше, чем анонимный словарь. Именованные кортежи имеют меньшие накладные расходы, чем словари (поскольку дублирующиеся ключи не нужно хранить для каждого элемента), но имеют удобство именованного доступа.
Вы можете определить свой именованный кортеж как:
from collections import namedtuple
Row = namedtuple('Row', 'iFile pFile fFile')
Тогда, скорее, создаем словарь вида:
{ 'iFile': foo, 'pFile': bar, ...}
вы бы создали экземпляр вашего именованного кортежа, который вы вернули из фабрики:
Row(iFile=foo, pFile=bar, ...)
Если вам нужен доступ к вложенному значению, вы просто получаете доступ к нему как к переменной экземпляра:
foo = Row(iFile="somevalue", pfile="different_value", fFile="yet another value")
if foo.iFile == "whatever":
....