Какова сложность cmp () в Python? - PullRequest
0 голосов
/ 05 февраля 2020

Какова общая сложность cmp () в python?

У меня два дикта. Оба имеют одинаковую длину, оба имеют одинаковые ключи. Ключи и значения являются строками. В чем сложность сравнения этих диктов с помощью cmp ()? Если диктанты разные, то сложность отличается от того, что они равны?

dict1 = {
    'a': 'f',
    'b': 'g',
    'c': 'h',
    'd': 'i'
}

dict2 = {
    'a': 'f',
    'b': 'g',
    'c': 'h',
    'd': 'i'
}

cmp(dict1, dict2)

1 Ответ

3 голосов
/ 05 февраля 2020

Какова общая сложность cmp () в python?

Там нет ни одного. cmp() просто делегирует метод модели данных __cmp__ (и слот tp_compare для «нативных» типов, реализованных в C), реализация которого полностью произвольна. Так что вам нужно задуматься о том, какова сложность __cmp__ для определенного c типа .

Чтобы узнать, какова сложность cmp для диктов , вам придется копаться в Python 2 коде (поскольку cmp был удален из python 3).

И обратите внимание, что это будет только часть истории, потому что cmp коллекции будет рекурсивным (оно будет cmp ее содержимым и, следовательно, сложность конкретного c экземпляра dict будет зависеть, в частности, от его специфики).

...