Free performance tip of the day 2:

Python has awesome built-ins to do all sorts of cool stuff, including allowing you to efficiently sort by an attribute in a list of objects or by item in a list of dicts, lists or tuples.

Examples:
```python
In [1]: from operator import itemgetter, attrgetter    

In [2]: import random

In [3]: class A(object):
    def __init__(self, a):
        self.a = a

In [4]: a = (A(random.randrange(100)) for x in xrange(10))

In [5]: map(attrgetter('a'), sorted(a, key=attrgetter('a')))
Out[5]: [10, 12, 32, 43, 45, 45, 57, 78, 82, 97]

In [6]: b = ({'b': random.randrange(100)} for x in xrange(10))

In [7]: sorted(b, key=itemgetter('b'))
Out[7]: 
[{'b': 3},
 {'b': 10},
 {'b': 12},
 {'b': 12},
 {'b': 13},
 {'b': 19},
 {'b': 55},
 {'b': 59},
 {'b': 67},
 {'b': 69}]

In [8]: c = ([random.randrange(100) for x in xrange(5)] for x in xrange(10))

In [9]: sorted(c, key=itemgetter(3))
Out[9]: 
[[42, 29, 48, 1, 6],
 [13, 19, 11, 2, 86],
 [23, 52, 25, 6, 71],
 [19, 12, 27, 22, 25],
 [97, 84, 2, 22, 57],
 [94, 84, 32, 34, 12],
 [94, 28, 71, 34, 37],
 [17, 87, 29, 40, 92],
 [1, 51, 71, 58, 17],
 [42, 82, 20, 90, 75]]
```

This is more efficient than lambda functions since it's implemented in c and is cleaner because it doesn't require using lambdas.

In summary, it never hurts and sometimes helps to use `operator.itemgetter` and `operator.attrgetter` instead of lambdas and in this case, it may save a tiny bit of processing time if you change it to:

```python
sorted(self.players, key=attrgetter('food'), reverse=True)
```