On Thu, 08 Mar 2007 09:20:20 +0100, Alexander Eisenhuth wrote: > Hello, > > what algo do you use, when you want to find the dict values from d, with > members > of l. Following example: > > >>> d = {1:2,2:3,3:4,4:5,5:6,6:7,7:8,8:9,9:10} > >>> l = [7,8] > >>> found_dic_members = <yourCode> > >>> print found_dict_members > [8,9]
It depends. If all of the values in d are usable as keys (that is, all the values are hashable, so no lists or sets etc.) then you can build a reverse-lookup dictionary and use that for fast look-ups. >>> d = {1: 'a', 2: 'b', 3: 'c'} >>> rd = dict(zip(d.values(), d.keys())) >>> rd {'a': 1, 'c': 3, 'b': 2} But if you can't do that, you're stuck with a slow search through the entire dict: def reverse_search(d, target): """Return the first key of dict d that matches the target value.""" for key, value in d.iteritems(): if value == target: return key raise KeyError('no key found matching that value') In both cases though, you have to think about what you want to happen for duplicated values. -- Steven D'Aprano -- http://mail.python.org/mailman/listinfo/python-list