Python 和 JSON 条件优化



我正在尝试使用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'])

最新更新