Ich versuche Python zu verwenden, um Unternehmen anhand einer Reihe von Attributen zu klassifizieren. Die Daten zeigen, was jedes Unternehmen Kategorie Attribute hat in einer JSON-Datei, wie gespeichert:Python und JSON bedingte Optimierung
{
"type1": {
"business_code": [
1,
3,
5
],
"business_code2": [
2,
7,
11
],
"business_name": [
"pizza",
"bagel store"
]
},
"type2": {
"business_code": [
4,
18,
23
],
"business_code2": [
8,
16,
72
],
"business_name": [
"bank",
"credit union"
]
}
}
Und ich möchte Python verwenden, um sie in einer Funktion zu klassifizieren, die business_code nimmt, business_code2 und business_name als Argumente, wie
with open('json_test.json') as f:
j_test = json.load(f)
def classify_business(business_code, business_code2, business_name):
for key, _ in j_test:
if (business_code in j_test[key]['business_code'] or
business_code2 in j_test[key]['business_code2'] or
business_name in j_test[key]['business_name']):
break
else:
continue
return key
das Problem ist, dass ich viele Klassen haben, und die conditionals sind nicht immer gleich für jede Klasse. Zum Beispiel benötigt class1 möglicherweise eine Übereinstimmung für business_code AND (business_code2 oder business_name) und class2 benötigt möglicherweise nur eine Übereinstimmung (business_code ODER business_code2 OR business_name).
Ich würde gerne wissen, ob es eine sauberere Möglichkeit gibt, die Bedingungen in der Python-Funktion zu tun, ohne eine neue explizit für jede Klasse zu schreiben. Vielleicht etwas, das in der JSON-Datei vorzugsweise gemacht werden könnte.
Ich bin nicht sicher, das ist, was ich suche. Die verschiedenen erforderlichen Bedingungen ändern sich basierend auf den Unternehmensklassen in der JSON-Datei. Wenn Sie also nacheinander die Geschäftstypen durchgehen, um zu prüfen, ob sie zu jedem Geschäft gehören, benötigen Sie für jede Kategorie unterschiedliche Kombinationen von (und) s und (oder) s, aber sie ändern sich nicht auf der Basis auf das Input-Geschäft wird kategorisiert. Entschuldigung, wenn ich nicht klar darüber bin. – jesseWUT
Sie müssen die Frage klären und zeigen, wie Sie dies beabsichtigen. Sie erwähnen Klassen, aber in der Frage gibt es keinen Klassencode. – Barmar
Entschuldigung. Als ich "Klasse" und "Klassifizieren" sagte, meinte ich nur Typ, nichts mit Objekten zu tun. Ich habe die Wörter class und class2 im json-Code in type und type2 geändert. – jesseWUT