Еще одним главным занятием многих систем является сортировка: упорядочение элементов коллекций в соответствии с некоторым ограничением. Сценарий в примере 18.25 определяет простую функцию сортировки на языке Python, которая упорядочивает список объектов по полю. Поскольку операция индексирования в языке Python является универсальной операцией, поле может быть индексом или ключом — эта функция может сортировать списки последовательностей или отображений.
Пример 18.25. PP4E\Dstruct\Classics\sort1.py
def sort(list, field): res = [] # всегда возвращает список
for x in list:
i = 0
for y in res:
if x[field] <= y[field]: break # узел списка попадает сюда?
i += 1 res[i:i] = [x] # вставить в результат
return res
if __name__ == ‘__main__’:
table = [ {‘name’:’john’, ‘age’:25}, {‘name’:’doe’, ‘age’:32} ] print(sort(table, ‘name’)) print(sort(table, ‘age’))
table = [ (‘john’, 25), (‘doe’, 32) ] print(sort(table, 0)) print(sort(table, 1))
Ниже приводится результат работы программного кода самотестирования этого модуля. В первых двух тестах выполняется сортировка словарей, в последних — кортежей:
C:\…\PP4E\Dstruct\Classics> python sort1.py
[{‘age’: 32, ‘name’: ‘doe’}, {‘age’: 25, ‘name’: ‘john’}]
[{‘age’: 25, ‘name’: ‘john’}, {‘age’: 32, ‘name’: ‘doe’}]
[(‘doe’, 32), (‘john’, 25)] [(‘john’, 25), (‘doe’, 32)]
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011