0

我目前有一个包含其他对象数组的对象

{
    "id": 2247511687,
    "timeStamp": "2020-12-20T19:51:32.275Z",
    "children": [
        {
            "id": 2662773967,
            "qualifierId": 33
        },
        {
            "id": 2662774089,
            "qualifierId": 343,
            "value": "3"
        },
        {
            "id": 2662773969,
            "qualifierId": 245
        }
    ]
}

我需要根据子数组来决定如何处理 Object。使用上面的示例,如果对象中存在合格的 343 和 245,我想对对象做 X,但是,如果只存在合格的 343,我想对对象做 Y。

有没有一种有效的方法可以在没有对象多次迭代的情况下做到这一点?或者将数据转换为更易于访问的格式?

4

1 回答 1

1

在进行迭代之前定义处理器功能,同时迭代选择需要的处理器并运行操作。

假设ld您指定的对象列表,您可以使用以下内容:

def fn1(o): return (1, o)

def fn2(o): return (2, o)

def whichfn(qids):
    if 343 in qids and 245 in qids:
        return fn1
    elif 343 in qids:
        return fn2

for d in l:
    # get all qualifierIds into a set
    qids = {v.get("qualifierId") for v in d["children"]}

    # find the function you need
    fn = whichfn(qids)

    # run the function
    if fn:
        fn(d)
于 2021-02-03T10:09:57.567 回答