def create_prop_dictionary(properties_list):
    """
    Creates a dictionary of all properties from the properties list

    :param properties_list: list of property objects
    :return: dictionary of property objects grouped by unique key (name, unit, condition name, condition unit, method and data type)
    """

    prop_dict = {}
    for prop in properties_list:

        identifier = prop.name + '-'
        if prop.units:
            identifier += prop.units + '-'
        else:
            identifier += '' + '-'
        if prop.conditions:
            for cond in prop.conditions:
                identifier += cond.name + '-'
                if cond.units:
                    identifier += cond.units
                else:
                    identifier += '' + '-'
        if prop.methods:
            for meth in prop.methods:
                identifier += meth.name + '-'
        if prop.data_type:
            identifier += prop.data_type + '-'

        if prop.scalars or prop.files:
            try:
                prop_dict[identifier].append(prop)
            except KeyError:
                prop_dict[identifier] = [prop]

    return prop_dict