根据数组中的对象进行条件决策
Making conditional decision based on objects in an Array
我目前有一个包含其他对象数组的对象
{
"id": 2247511687,
"timeStamp": "2020-12-20T19:51:32.275Z",
"children": [
{
"id": 2662773967,
"qualifierId": 33
},
{
"id": 2662774089,
"qualifierId": 343,
"value": "3"
},
{
"id": 2662773969,
"qualifierId": 245
}
]
}
我需要根据子数组决定如何处理对象。
使用上面的示例,如果对象中存在合格的 343 和 245,我想对该对象执行 X,但是,如果仅存在合格的 343,我想对该对象执行 Y。
有没有一种有效的方法可以在不对对象进行多次迭代的情况下做到这一点?
或者将数据转换为更易于访问的格式?
在进行迭代之前定义处理器函数,在迭代时选择需要的函数和 运行 操作。
假设 l
是您指定的对象列表 d
,您可以使用如下内容:
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)
我目前有一个包含其他对象数组的对象
{
"id": 2247511687,
"timeStamp": "2020-12-20T19:51:32.275Z",
"children": [
{
"id": 2662773967,
"qualifierId": 33
},
{
"id": 2662774089,
"qualifierId": 343,
"value": "3"
},
{
"id": 2662773969,
"qualifierId": 245
}
]
}
我需要根据子数组决定如何处理对象。 使用上面的示例,如果对象中存在合格的 343 和 245,我想对该对象执行 X,但是,如果仅存在合格的 343,我想对该对象执行 Y。
有没有一种有效的方法可以在不对对象进行多次迭代的情况下做到这一点? 或者将数据转换为更易于访问的格式?
在进行迭代之前定义处理器函数,在迭代时选择需要的函数和 运行 操作。
假设 l
是您指定的对象列表 d
,您可以使用如下内容:
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)