[EMAIL PROTECTED] wrote: > Working with several thousand tagged items on a Tkinter Canvas, I want > to change different configurations of objects having a certain group of > tags. > > I've used the sets module, on the tuple returned by Tkinter.Canvas. > find_withtag() method. > > Since this method takes only one tag at time, I use it for each tag > that is part of the look-up group, create a set object for each tuple > and intersect the resulting sets, that I tuple out again to feed a loop > to change the configuration of the items. > > Anyone have a more pythonic way (or better performing ) way to suggest > ?
It depends. If the search on tags is implemented linear, it might be better to loop over all items and filter suing a compound predicate, like this: rouge_artefacts = [item for m1.all_itmes() if item.has_tag("rouge") and item.has_tag("artefact")] Please note that I don't know TKinter's API, but I can't imagine that it lacks the possibility to fettch a list of all items and query an item for it tags. The synopsis may vary from above, thogh. But if tkinter stores the tagged items as mapping of tag -> set/list, then I think your approach is as fast as you can get. Time it out. And maybe another thing would be to manage that tagging relation yourself. Regards, Diez -- http://mail.python.org/mailman/listinfo/python-list