我有一个包含 4 列的列表。现在我想迭代列表列表中的每个列表,以找到第一个列表,该列表的第三列具有值
ABC for first column and value
XYZ。如果这个标准满足,我想跳出循环并返回第四列中的内容。例如,列表如下所示。
`AAA 23 `BBB value
`AAA 23 `CCC value
`ABC 23 `XYZ value
`BBB 23 `CCC value
......
.....
我尝试做如下的事情,但这似乎不起作用。
myfunc:{if [x[0] =`ABC and x[2]=`XYZ ; val:x[3] ; 'break ] }
@[myfunc;x; if [x[0] =`ABC and x[2]=`XYZ; :x[3]]] each ListOfList
请注意,我不想遍历整个列表列表,因为其中有数百万个列表,并且有兴趣获取匹配条件的第一个列表的值。
如果列表中的所有列表至少有 4 个条目,那么执行向量比较可能比使用迭代器更有效。
list[;3]where(list[;0]=`ABC)&list[;2]=`XYZ / to get all the matching entries
list[;3]first where(list[;0]=`ABC)&list[;2]=`XYZ / to get only the first match