Hi @f.kemminje ,
you can try something from this post to solve your problem:
https://community.safe.com/s/question/0D54Q00008aKQnaSAG/loop-through-featurejoiner
VariableRetriever -->Tester--> VariableSetter
@jdh ,@connecter . Sorry, my question was not clear I think. Please refer to my image. links above are not excluding candidates if it is already matched. Also attached are my source MicroStation dgn file and fmw file. @david_r ,@mark2atsafe ,@Takashi Iijima Can you pls help me
As soon as "A" is matched with "1". then 1 should be excluded from the set. when b comes in, it should search only with 2 and 3, and now B will be matched to a closest candidate"2". and "2" excluded. and C will come and only one left, that is "3"
Hello again @f.kemminje ,
here is a workflow I build for you:
The result table:

I used Python caller for this and achieved the target.
I used list exploder after neighbor finder, then stored the feature and its attributes to list @ pythoncaller's input method.
And in the close() method,
created one new list , and appended only valid feature and its attributes. No duplicate base or candidates.(ID not in List then only append)
I got the Result what I want.
Thanks For Everyone, who Answered my Q.
import fme
import fmeobjects
class FeatureProcessor(object):
def __init__(self):
self.featureList = []
self.mylist = []
self.mylist2 = []
def input(self,feature):
self.featureList.append(feature)
self.mylist.append(str(feature.getAttribute('tid')))
self.mylist2.append(str(feature.getAttribute('cid')))
#self.mylist2.append(feature.getAttribute('_creation_instance'))
def close(self):
outlist1=[]
outlist2=[]
mylist1=self.mylist
mylist2=self.mylist2
i = 0
while i < len(mylist1):
tid=(mylist1[i])
cid=(mylist2[i])
if tid not in outlist1 and cid not in outlist2:
outlist1.append(str(tid))
outlist2.append(str(cid))
print(tid)
print(cid)
self.featureList[i].setAttribute('tid',tid)
self.featureList[i].setAttribute('cid',cid)
self.pyoutput(self.featureList[i])
i = i + 1