如何解决根据数组中的对象进行条件决策
我目前有一个包含其他对象数组的对象
{
"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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。