def from_dict(person_dict): history = list() for event_dict in person_dict.get('history'): event_type = event_dict.get('type') if event_type == 'event': event = Event.from_dict(event_dict) elif event_type == 'offer': event = Offer.from_dict(event_dict) elif event_type == 'transaction': event = Transaction.from_dict(event_dict) else: raise ValueError( 'ERROR - Event type not recognized ({}).'.format( event_type)) history.append(event) person = Person( person_dict.get('became_member_on'), \ id=person_dict.get('id'), \ dob=person_dict.get('dob'), \ gender=person_dict.get('gender'), \ income=person_dict.get('income'), \ taste=Categorical.from_dict(person_dict.get('taste')), \ marketing_segment=Categorical.from_dict(person_dict.get('marketing_segment')), \ last_transaction=person_dict.get('last_transaction'), \ last_unviewed_offer=person_dict.get('last_unviewed_offer'), \ last_viewed_offer=person_dict.get('last_viewed_offer'), \ history=history, \ view_offer_sensitivity=Categorical.from_dict(person_dict.get('view_offer_sensitivity')), \ make_purchase_sensitivity=Categorical.from_dict(person_dict.get('make_purchase_sensitivity')), \ purchase_amount_sensitivity=Categorical.from_dict(person_dict.get('purchase_amount_sensitivity'))) return person
def from_dict(population_dict): population = Population( World.from_dict(population_dict.get('world')), people=[ Person.from_dict(person_dict) for person_dict in population_dict.get('people') ], portfolio=[ Offer.from_dict(offer_dict) for offer_dict in population_dict.get('portfolio') ], deliveries_path=population_dict.get('deliveries_path'), transcript_file_name=population_dict.get('transcript_file_name')) return population