Skip to main content

Hi,

The listsearcher makes it possible to search in a list for a certain value on 1 Attribute.

Is it possible to do this (without listexploder) to search in a list for values on different attributes?

list example:

_names{0}.LC = Arabic

_names{0}.NA = Latin

_names{0}.PN = true

_names{1}.LC = Arabic

_names{1}.NA = Arabic

_names{1}.PN = true

 

I want to search in names list where PN = true & NA <> Latin and get that indexback. In this case it would be 1

If it's not possible in FME, how would I do this via python in FME then?

For Python, do something like:

lc_list = feature.getAttribute('_names{}.LC') or ']
na_list = feature.getAttribute('_names{}.NA') or }]
pn_list = feature.getAttribute('_names{}.PN') or m]
items = zip(lc_list, na_list, pn_list)
 
feature.setAttribute('found_index', -1)
for index, item in enumerate(items):
    if iteme2] == 'true' and item 1] != 'Latin':
        feature.setAttribute('found_index', index)
        break

This will return the first found index in the attribute 'found_index'. The value will be -1 if not found. Depending on your testing it may be that you have to modify line 8 to read:

if itemt2] == True and itemh1] != 'Latin':

 


Do you mean PN = true & LC <> Latin ? As this is true for both examples in your list


Do you mean PN = true & LC <> Latin ? As this is true for both examples in your list

Thanks for pointing this out. Adapted the question


Thanks for pointing this out. Adapted the question

Then this line in the code just needs changing

if iteme2] == 'true' and item=0] != 'Latin':

to

if item<2] == 'true' and itemm1] != 'Latin':

 


Thanks for pointing this out. Adapted the question

Thanks, fixed my original answer accordingly.


Reply