The sort()
method and the sorted()
function take a key argument:
var.sort(key=lambda v: v.upper())
The function named in key
is called for each value and the return value is used when sorting, without affecting the actual values:
>>> var=['ant','bat','cat','Bat','Lion','Goat','Cat','Ant']
>>> sorted(var, key=lambda v: v.upper())
['ant', 'Ant', 'bat', 'Bat', 'cat', 'Cat', 'Goat', 'Lion']
To sort Ant
before ant
, you'd have to include a little more info in the key, so that otherwise equal values are sorted in a given order:
>>> sorted(var, key=lambda v: (v.upper(), v[0].islower()))
['Ant', 'ant', 'Bat', 'bat', 'Cat', 'cat', 'Goat', 'Lion']
The more complex key generates ('ANT', False)
for Ant
, and ('ANT', True)
for ant
; True
is sorted after False
and so uppercased words are sorted before their lowercase equivalent.
See the Python sorting HOWTO for more information.