On Tue, Jun 22, 2010 at 7:53 AM, Vikram <[email protected]> wrote: > Suppose i have this list: > >>>> a = [['cat',2],['cat',5],['cat',9],['dog',6]] >>>> a > [['cat', 2], ['cat', 5], ['cat', 9], ['dog', 6]] > > Now, there is a nice way to obtain the value 9. > >>>> z = dict(a) >>>> z > {'dog': 6, 'cat': 9} > > Is there any elegant way to extract the value 2? (Value corresponding to the > first occurence of 'cat' in the 2-D list).
I don't know about elegant/nice but the first thing that occured to me was x = [['cat', 2], ['cat', 5], ['cat', 9], ['dog', 6]] [t[1] for t in x if t[0] == 'cat'][-1] # Last value (no error checking) (t[1] for t in x if t[0] == 'cat').next() # First value. You can use a genexp for the latter since we can stop as soon as we see one item. For the former, you'll have to go through the whole list anyway. I mtimed the former against the dict approach and got roughly the same speed (there was some 0.01 sec. difference). The first is a little wasteful though. You make an entire list and then throw it away. -- ~noufal http://nibrahim.net.in _______________________________________________ BangPypers mailing list [email protected] http://mail.python.org/mailman/listinfo/bangpypers
