Python 基于数组中的对象进行条件决策
我当前有一个包含其他对象数组的对象Python 基于数组中的对象进行条件决策,python,arrays,iteration,design-decisions,Python,Arrays,Iteration,Design Decisions,我当前有一个包含其他对象数组的对象 { "id": 2247511687, "timeStamp": "2020-12-20T19:51:32.275Z", "children": [ { "id": 2662773967, "qualifierId": 33 },
{
"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)
如果
“children”
列表很少更改,那么可能需要保留一个单独的“childrenQualifierId”
列表。然后,您只需迭代此列表即可找到限定符ID
s。谢谢,不幸的是,此逻辑将应用于的每个对象的子列表都是唯一的,那么“childrenQualifierId”
列表将是唯一的。我只是说你可以预先计算这个列表,并把它放在每个“children”
列表的旁边。我喜欢它,会尝试一下这样的东西。干杯