You could deifine __getitem__() as:
def __getitem__(self, idx):
return {
'interactions': self._data[idx],
'user_features': self._user_features[self._data[idx]['user']] if self._user_features else None
}
Is a little bit faster. But is not a definitive solution.