James Stroud wrote:
Oops, last one had a typo:


a = ['bob', 'greg', 'cindy', 'alice'] b = ['fred','barney','betty','wilma','pebbles','bambam'] c = ['jed', 'granny', 'jethro', 'ellie-mae'] d = ['bob','carol','ted','alice']

e = [a,b,c,d]

for ary in e:
  print ary

e.sort(lambda x,y:cmp(x[1],y[1]))

for ary in e:
  print ary

e.sort(lambda x,y:cmp(x[0],y[0]))

for ary in e:
  print ary

I would probably use the key= argument instead of the cmp= argument. Not only is it easier, but it'll probably be faster too:


py> lst = [['bob', 'greg', 'cindy', 'alice'],
... ['fred', 'barney', 'betty', 'wilma', 'pebbles', 'bambam'],
... ['jed', 'granny', 'jethro', 'ellie-mae'],
... ['bob', 'carol', 'ted', 'alice']]
py> import operator
py> lst.sort(key=operator.itemgetter(3))
py> lst
[['bob', 'greg', 'cindy', 'alice'], ['bob', 'carol', 'ted', 'alice'], ['jed', 'granny', 'jethro', 'ellie-mae'], ['fred', 'barney', 'betty', 'wilma', 'pebbles', 'bambam']]
py> lst.sort(key=operator.itemgetter(0))
py> lst
[['bob', 'greg', 'cindy', 'alice'], ['bob', 'carol', 'ted', 'alice'], ['fred', 'barney', 'betty', 'wilma', 'pebbles', 'bambam'], ['jed', 'granny', 'jethro', 'ellie-mae']]
py> lst.sort(key=operator.itemgetter(slice(2)))
py> lst
[['bob', 'carol', 'ted', 'alice'], ['bob', 'greg', 'cindy', 'alice'], ['fred', 'barney', 'betty', 'wilma', 'pebbles', 'bambam'], ['jed', 'granny', 'jethro', 'ellie-mae']]


Note that you can pass slice objects to operator.itemgetter, so the last example is like "key=lambda x: x[:2]".

STeVe
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to