def get_displacement_rate(
        hazard, classification, hazard_class, qsettings=None):
    """Get displacement rate for hazard in classification in hazard class.

    :param hazard: The hazard key.
    :type hazard: basestring

    :param classification: The classification key.
    :type classification: basestring

    :param hazard_class: The hazard class key.
    :type hazard_class: basestring

    :param qsettings: A custom QSettings to use. If it's not defined, it will
        use the default one.
    :type qsettings: qgis.PyQt.QtCore.QSettings

    :returns: The value of displacement rate. If it's not affected, return 0.
    :rtype: int
    """
    is_affected_value = is_affected(
        hazard, classification, hazard_class, qsettings)
    if is_affected_value == not_exposed_class['key']:
        return 0  # Just to make it clear
    elif not is_affected_value:
        return 0
    preference_data = setting(
        'population_preference',
        default=generate_default_profile(),
        qsettings=qsettings)

    # Use default from the default profile
    default_profile = generate_default_profile()
    default_displacement_rate_value = default_profile.get(hazard, {}).get(
        classification, {}).get(hazard_class, {}).get('displacement_rate', 0)

    # noinspection PyUnresolvedReferences
    return preference_data.get(hazard, {}).get(classification, {}).get(
        hazard_class, {}).get(
        'displacement_rate', default_displacement_rate_value)
Get displacement rate for hazard in classification in hazard class.

    :param hazard: The hazard key.
    :type hazard: basestring

    :param classification: The classification key.
    :type classification: basestring

    :param hazard_class: The hazard class key.
    :type hazard_class: basestring

    :param qsettings: A custom QSettings to use. If it's not defined, it will
        use the default one.
    :type qsettings: qgis.PyQt.QtCore.QSettings

    :returns: The value of displacement rate. If it's not affected, return 0.
    :rtype: int