def __init__(self, client, self_entity, entities, conv_parts):
        self._client = client
        self._self_user = User.from_entity(self_entity, None)
        # {UserID: User}
        self._user_dict = {self._self_user.id_: self._self_user}
        # Add each entity as a new User.
        for entity in entities:
            user_ = User.from_entity(entity, self._self_user.id_)
            self._user_dict[user_.id_] = user_
        # Add each conversation participant as a new User if we didn't already
        # add them from an entity.
        for participant in conv_parts:
            self.add_user_from_conv_part(participant)
        logger.info('UserList initialized with {} user(s)'
                    .format(len(self._user_dict)))

        self._client.on_state_update.add_observer(self._on_state_update)
This method processes the mandatory_tour_frequency column that comes out of
dataset/ETHPy150Open tdryer/hangups/hangups/user.py/UserList.__init__--crossover with--dataset/ETHPy150Open UDST/activitysim/activitysim/defaults/models/util/mandatory_tour_frequency.py/process_mandatory_tours