Звучит так, будто вы просматриваете список для каждой подстроки.Как насчет того, чтобы создать ключ для поиска ключей?Конечно, вам все равно придется начать поиск по самому длинному подразделу.
L = ['a', 'b',['aa','bb','cc'], 'c']
def lookups( L ):
""" returns `item`, `code` tuples """
for i, item in enumerate(L):
if isinstance(item, list):
for j, sub in enumerate(item):
yield sub, "%02d%02d" % (i,j)
else:
yield item, "%02d" % i
Затем вы можете искать подстроки с помощью:
lookupdict = dict(lookups(L))
print lookupdict['bb'] # but you have to do 'bb' before trying 'b' ...
Но если длина ключа не просто 1 или 2,также может иметь смысл сгруппировать элементы в отдельные диктовки, где каждый ключ имеет одинаковую длину.