from typing import Dict, List def validate_entities(entities): result = [] reduced_kpi: Dict[str, List[Dict[str, str | int]]] = {} for item in entities: label = item["label"] if label not in reduced_kpi: reduced_kpi[label] = [] reduced_kpi[label].append(item) for item in reduced_kpi.items(): if item[0] == "FONDSNAME": result.extend(item[1]) continue elif item[0] == "DATUM": result.extend(item[1]) continue elif item[0] == "FONDSMANAGER": result.extend(item[1]) continue validated = False for entity in item[1]: if entity["status"] == "validated": validated = True if validated: item_list = [x for x in item[1] if x["status"] == "validated"] result.extend(item_list) else: result.extend(item[1]) return result if __name__ == "__main__": entities = [ {"label": "PERSON", "entity": "John Doe", "status": "validated"}, {"label": "PERSON", "entity": "Exxeta", "status": "invalid"}, {"label": "ORG", "entity": "Google", "status": "invalid"}, {"label": "FONDSNAME", "entity": "Microsoft", "status": "validated"}, {"label": "FONDSNAME", "entity": "Amazon", "status": "invalid"}, {"label": "FONDSNAME", "entity": "Apple", "status": "invalid"} ] print(validate_entities(entities))