Find partial tuple in list of tuple

As @tobias_k suggested, the simplest way is to convert tuples and subtuples to string, and use the in operator for substring check:

l = [('a','b','c','d','e'),
          ('f','g','h','i','l'),
          ('m','n','o','p','q'),
          ('r','s','t','u','v'),
          ('z', 'aa', 'ab', 'ac', 'ad'),
          ...]

def subtuple_index(tuples, t):
    def tuple2str(t): return ',{},'.format(','.join(t))
    t = tuple2str(t)
    for i,x in enumerate(map(tuple2str, tuples)):
        if t in x: return i
    return -1


>>> subtuple_index(l, ('m','n'))
2
>>> subtuple_index(l, ('z','aa','ab'))
4
>>> subtuple_index(l, ('m','o'))
-1
>>> subtuple_index(l, ('z','a'))
-1

Leave a Comment