我正在尝试使用Python根据许多属性对业务进行分类。 指向每个业务类别具有的属性的数据存储在 json 文件中,例如:
{
"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"
]
}
}
我想使用 python 将它们分类为一个函数,该函数将 business_code、business_code2 和 business_name 作为参数,例如
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
问题是我有很多类,每个类的条件并不总是相同的。例如,class1 可能需要在 business_code AND(business_code2 或 business_name)上匹配,而 class2 可能只需要匹配 (business_code AND 或 business_code2 或 business_name)。
我想知道是否有任何更干净的方法来执行 Python 函数中的条件,而无需为每个类明确编写一个新条件。 也许最好在 JSON 文件中完成一些事情。
classify_business
应该采用一个函数来测试企业是否符合标准。
def classify_business(j_test, tester):
for key, business in j_test:
if tester(business):
return key
return None
然后你可以用lambda
来调用它
classify_business(j_test, lambda b: return business_code in b['business_code'] or business_code2 in b['business_code2'] or business_name in b['business_name'])