Srinivas Iyyer wrote: > Dear group: > > I have two lists and I have to match the element in > the first list to element in second list and print the > line from second list: > > Example: > listA =['apple','baby','cat'] > listB =['fruit\tapple','tree\tapple','fruit\tmango', > 'human\tbaby' > 'infant\tbaby' > 'human\tAlbert' > 'animal\tcat' > 'tiger\tcat' > 'animan\tdog'] > > > I have to take apple, search in listB and print > > fruit apple > tree apple > infant baby > human baby > animal cat > tiger cat
Presumably that is the results from searching for 'apple', 'baby' and 'cat'... I would make a helper dictionary that maps from the second element in listB to a list of listB entries containing that element. This way you make just one pass over listB: listA =['apple','baby','cat'] listB =['fruit\tapple','tree\tapple','fruit\tmango', 'human\tbaby', 'infant\tbaby', 'human\tAlbert', 'animal\tcat', 'tiger\tcat', 'animan\tdog'] # Make a helper dict that maps the second element of listB to a list of elements d={} for m in listB: cols = m.split('\t') term = cols[1] d.setdefault(term, []).append(m) for i in listA: items = d.get(i) for item in items: print item The only tricky part is the line d.setdefault(term, []).append(m) This is just a shortcut for something like try: data = d[term] except KeyError: d[term] = data = [] data.append(m) Kent > > > I am doing it this way: > > for i in listA: > for m in listB: > cols = m.split('\t') > term = cols[2] > if i == term: > print m > > this is very time consuming. > > Because the two columns in listB are redundant I am > unable to do a dict method. > > The other way could be using a reg.ex method (which I > did not try yet because the script written based on > equality is still running. > > for i in listA: > pat = re.compile(i) > for m in listB: > cols = m.split('\t') > terms = cols[1] > if pat.match(terms): > print m > > Experts, could you please suggest any other method > which is fast and does the job correctly. > > Thank you. > > Srini > > > > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor