Converts given value to a list of dictionaries as follows:

    * ``[{...}]`` → ``[{...}]``
    * ``{...}``   → ``[{...}]``
    * ``'xyz'``   → ``[{default_key: 'xyz'}]``
    * ``None``    → ``[{default_key: default_value}]``  (if specified)
    * ``None``    → ``[]``

    :param default_value:
        only Unicode, i.e. `str` in Python 3.x and **only** `unicode` in Python 2.x

def normalize_list_of_dicts(value, default_key, default_value=UNDEFINED):
    """
    Converts given value to a list of dictionaries as follows:

    * ``[{...}]`` → ``[{...}]``
    * ``{...}``   → ``[{...}]``
    * ``'xyz'``   → ``[{default_key: 'xyz'}]``
    * ``None``    → ``[{default_key: default_value}]``  (if specified)
    * ``None``    → ``[]``

    :param default_value:
        only Unicode, i.e. `str` in Python 3.x and **only** `unicode` in Python 2.x

    """
    if value is None:
        if default_value is UNDEFINED:
            return []
        value = default_value

    if isinstance(value, dict):
        return [value]

    if isinstance(value, text_type):
        return [{default_key: value}]

    if isinstance(value, list):
        if not all(isinstance(x, dict) for x in value):
            def _fix(x):
                return {default_key: x} if isinstance(x, text_type) else x
            return list(map(_fix, value))

    return value