If anyone figures out a different way to sort by word length....
>>> list1 = ['Herring','used','to','be','abundant','in','the','Atlantic','Ocean','then','herring','got','overfished']
>>> lengthlist = map(len,list1)
>>> lengthlist
[7, 4, 2, 2, 8, 2, 3, 8, 5, 4, 7, 3, 10]
>>> all = zip(lengthlist,list1)
>>> all
[(7, 'Herring'), (4, 'used'), (2, 'to'), (2, 'be'), (8, 'abundant'), (2, 'in'), (3, 'the'), (8, 'Atlantic'), (5, 'Ocean'), (4, 'then'), (7, 'herring'), (3, 'got'), (10, 'overfished')]
>>> allzip.sort()
>>> for i in allzip:
... print i
...
(2, 'be')
(2, 'in')
(2, 'to')
(3, 'got')
(3, 'the')
(4, 'then')
(4, 'used')
(5, 'Ocean')
(7, 'Herring')
(7, 'herring')
(8, 'Atlantic')
(8, 'abundant')
(10, 'overfished')
don't know whether its what you mean by sort by word length..pardon me if not..