Чем отличается operator.itemgetter от operator.getitem?

Рейтинг: 0Ответов: 1Опубликовано: 18.01.2023

Писал вот такой код

import operator

tuples = [(1, 'd'), (2, 'b'), (4, 'a'), (3, 'c')] 

print(sorted(tuples, key=operator.itemgetter(1)))

В процессе написания опечатался и вместо .itemgetter написал .getitem, в итоге было вот это -

import operator

tuples = [(1, 'd'), (2, 'b'), (4, 'a'), (3, 'c')] 

print(sorted(tuples, key=operator.getitem(1)))

с которым код не сработал и выдал вот такую ошибку

TypeError: getitem expected 2 arguments, got 1

В документации ничего подробного нет. Поэтому решил спросить здесь у понимающих разницу между первым и вторым

P.S. Первый вариант кода рабочий

Ответы

▲ 3Принят

operator.getitem(lst, i) - это то же самое, что и lst[i]:

>>> import operator
>>> lst = [1, 2, 3, 4, 5]
>>> lst[2]
3
>>> operator.getitem(lst, 2)
3