def rename_dictionary_keys(data, mapping, default_value=None):
    """
    Renames the dictionary's keys based on the mapping. If any 'old value' isn't present it'll be added and assigned the value of 'default_value'.
    e.g. of mapping definition: {'crap name 1':'great name 1', 'crap name 2': 'great name 2'}
    Does NOT maintain key order!
    Key name is case sensitive.
    """
    reconstituted = {}
    for old_name, new_name in mapping.items():
        reconstituted[new_name] = data.get(old_name, default_value)
    return reconstituted
