47 lines
1.5 KiB
Python
47 lines
1.5 KiB
Python
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))
|