MyTetra Share
Делитесь знаниями!
Сортировка в Python
23.04.2018
17:28
Автор: br0ke
Текстовые метки: python, sequence, list, ordereddict, sort, lambda, key, multi-level sort
Раздел: Информационные технологии - Python

Сортировка списка на месте (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']))



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования