def resolve_keys(group_keys, value): """resolve keys to a key which will be used for grouping Args: group_keys (string): key which will be used for grouping value (obj): data value Returns: string: the key which will be used for """ keys = group_keys.split(".") for key in keys: value = value.get(key, None) return value def group_results(results_data, group_by): """group results data into certain group_by Args: results_data (obj): complete results data group_by (key): string Returns: obj: grouped results """ response_dict = dict() if group_by == "priority": response_dict = { "urgent": [], "high": [], "medium": [], "low": [], "None": [], } for value in results_data: group_attribute = resolve_keys(group_by, value) if isinstance(group_attribute, list): if len(group_attribute): for attrib in group_attribute: if str(attrib) in response_dict: response_dict[str(attrib)].append(value) else: response_dict[str(attrib)] = [] response_dict[str(attrib)].append(value) else: if str(None) in response_dict: response_dict[str(None)].append(value) else: response_dict[str(None)] = [] response_dict[str(None)].append(value) else: if str(group_attribute) in response_dict: response_dict[str(group_attribute)].append(value) else: response_dict[str(group_attribute)] = [] response_dict[str(group_attribute)].append(value) return response_dict