Bit of a python newbie, but I got the following list of tuples. I need to sort it by value and if the value is the same, solve ties alphabetically. Here\'s a sample:
In this instance, I'd use a lambda function as the key argument to sort()/sorted():
In [59]: sorted(list_of_medals, key=lambda x:(-x[1],x[0]))
Out[59]: 
[('Sweden', 24),
 ('Germany', 16),
 ('Ireland', 10),
 ('Russia', 10),
 ('Spain', 9),
 ('Albania', 8),
 ('Lithuania', 7),
 ('Iceland', 6),
 ('Italy', 5),
 ('Malta', 5),
 ('Estonia', 4),
 ('Serbia', 4),
 ('Turkey', 4),
 ('Azerbaijan', 2),
 ('Moldova', 2)]
The negation of x[1] is needed to sort the medals in descending order while sorting country names in ascending order (simply setting reverse=True wouldn't achieve that).
As several people have pointed out in the comments, a more general way to do a complex sort on a compound key is to perform several sorting steps. To do this, sort on one component at a time, starting with the least significant one:
In [67]: temp = sorted(list_of_medals, key=itemgetter(0))
In [68]: sorted(temp, key=itemgetter(1), reverse=True)
Out[68]: 
[('Sweden', 24),
 ('Germany', 16),
 ('Ireland', 10),
 ('Russia', 10),
 ...
This relies on the fact that Python's sort is stable, meaning that items that compare equal are never reordered.