Нет, использование cmp=
неэффективно.Вместо этого используйте key=
.Вот так:
sorted(list, key=lambda x: x['nr'])
Причина проста: cmp
сравнивает два объекта.Если ваш список длинный, есть много комбинаций из двух объектов, которые вы можете сравнить, поэтому список, который в два раза длиннее, занимает в два раза больше времени для сортировки.
Но с key
этодело обстоит не так, и сортировка длинных списков, следовательно, намного быстрее.
Но основная причина использования key
вместо cmp
заключается в том, что его гораздо проще использовать.
Кроме того, sorted
() имеет преимущество перед .sort()
, может принимать любые итерируемые, в то время как .sort()
работает со списками.