On Tue, 29 Mar 2005 11:29:33 -0700, Steven Bethard <[EMAIL PROTECTED]> wrote:

>infidel wrote:
>> You can use the new 'sorted' built-in function and custom "compare"
>> functions to return lists of players sorted according to any criteria:
>> 
>> 
>>>>>players = [
>> 
>> ...  {'name' : 'joe', 'defense' : 8, 'attacking' : 5, 'midfield' : 6,
>> 'goalkeeping' : 9},
>> ...  {'name' : 'bob', 'defense' : 5, 'attacking' : 9, 'midfield' : 6,
>> 'goalkeeping' : 3},
>> ...  {'name' : 'sam', 'defense' : 6, 'attacking' : 7, 'midfield' : 10,
>> 'goalkeeping' : 4}
>> ... ]
>> 
>>>>>def cmp_attacking(first, second):
>> 
>> ...  return cmp(second['attacking'], first['attacking'])
>> ...
>> 
>>>>>[p['name'] for p in sorted(players, cmp_attacking)]
>> 
>> ['bob', 'sam', 'joe']
>
>Or more efficiently, use the key= and reverse= parameters:
>
>py> players = [
>...    dict(name='joe', defense=8, attacking=5, midfield=6),
>...    dict(name='bob', defense=5, attacking=9, midfield=6),
>...    dict(name='sam', defense=6, attacking=7, midfield=10)]
>py> import operator
>py> [p['name'] for p in sorted(players,
>...                            key=operator.itemgetter('attacking'),
>...                            reverse=True)]
>['bob', 'sam', 'joe']
>
Perhaps the OP doesn't yet realize that Python also provides the ability
to define custom classes to represent players etc. E.g., using instance 
attribute
dicts instead of raw dicts (to save typing ;-):

 >>> class Player(object):
 ...     def __init__(self, **kw): self.__dict__.update(kw)
 ...     def __repr__(self): return '<Player %s>'%getattr(self, 'name', 
'(anonymous)')
 ...
 >>> players = [
 ...     Player(name='joe', defense=8, attacking=5, midfield=6),
 ...     Player(name='bob', defense=5, attacking=9, midfield=6),
 ...     Player(name='sam', defense=6, attacking=7, midfield=10)]
 >>> players
 [<Player joe>, <Player bob>, <Player sam>] 
 >>> import operator
 >>> [p.name for p in sorted(players, key=operator.attrgetter('attacking'), 
 >>> reverse=True)]
 ['bob', 'sam', 'joe']

And then he could create a Team class which might have players as an internal 
list,
and provide methods for modifying the team etc., and generating various reports
or calculating and/or retrieving data. Not to mention properties for dynamically
caclulated attributes etc ;-)

Regards,
Bengt Richter
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to