Сортировка списка на месте (inline). Возвращает None, поэтому ни в коем случае нельзя использовать совместно с операцией присваивания.
l = ['b', 'c', 'a', 'd']
l.sort()
print(l) # ['a', 'b', 'c', 'd']
Сортировка при помощи функции sorted. Возвращает отсортированную последовательность, поэтому её можно присвоить в исходную переменную.
l = ['b', 'c', 'a', 'd']
l = sorted(l)
print(l) # ['a', 'b', 'c', 'd']
Сортировка сложных структур (с указанием ключа):
a = [('a', 3), ('c', 2), ('b', 4), ('d', 1)]
print(sorted(a, key=lambda x: x[0])) # [('a', 3), ('b', 4), ('c', 2), ('d', 1)]
print(sorted(a, key=lambda x: x[1])) # [('d', 1), ('c', 2), ('a', 3), ('b', 4)]
То же самое работает с методом sort:
a = [('a', 3), ('c', 2), ('b', 4), ('d', 1)]
a.sort(key=lambda x: x[0])
print(a) # [('a', 3), ('b', 4), ('c', 2), ('d', 1)]
a.sort(key=lambda x: x[1])
print(a) # [('d', 1), ('c', 2), ('a', 3), ('b', 4)]
Многоуровневая сортировка:
sorted(list, key=lambda x: (x[0], -x[1]))
Отсортировать OrderedDict:
foo = OrderedDict([
(2, OrderedDict([
('depth', 0),
('height', 51),
('width', 51),
('id', 100)
])),
(1, OrderedDict([
('depth', 2),
('height', 51),
('width', 51),
('id', 55)
])),
(0, OrderedDict([
('depth', 1),
('height', 51),
('width', 51),
('id', 48)
])),
])
foo = OrderedDict(sorted(foo.iteritems(), key=lambda x: x[1]['depth']))