Всіх вітаю! У даній статті ми продовжимо тему спеціальних властивостей словників у Python. На цей раз ми поговоримо про модуль operator та його клас itemgetter(), яка дозволяє працювати зі списками та словниками у Python.
Суть itemgetter()
У модулі operator клас itemgetter() призначений для обрання елементів із ітерованих типів даниих. Варто всього лиш викликати його та передати потрібний елемент (або елементи) і ми отримаємо його.
До речі, варто також надати увагу й тому факту, що itemgetter() є не функцією, а саме класом.
Робота функції itemgetter()
Для початку роботи нам варто імпортувати модуль operator. Даний модуль є вбудованим, тому втсановлювати його потреби немає:
import operatorПриклад роботи зі списками
Почнемо з того, як можна використовувати клас itemgetter() зі списками. Наприклад, ми можемо обирати більше елементів зі списку, ніж коли вибираємо елемент звичайним способом.
Ось приклад, де ми беремо одразу три елементи зі списку:
english_football_clubs = ["Arsenal", "Chelsea", "Man City", "Brighton"]
get_elements = operator.itemgetter(0, 1, 3)
print(get_elements(english_football_clubs))('Arsenal', 'Chelsea', 'Brighton')Якраз у останньому рядку ми й можемо помітити, що маємо справу з класом, бо саме там ми записуємо змінну get_elements та надаємо їх список у дужках. По суті, get_elements — це екземпляр класу itemgetter().
Також можна застосовувати дану функцію для сортування списків. Для цього варто всього лиш передати функції sorted() змінну із результатом itemgetter() у параметр key. Таким чином, ми можемо легко й просто сорутвати елементи за один або більше елементами.
Ось приклад, де ми маємо список, що містить кортежі із назвою хімічного елементу, електронегативністю та атомною масою. Не переживайте, розбиратися у суті цих визначень сенсу для нас немає, але це буде хорошим прикладом сортування списків за допомогою itemgetter().
chemical_elements = [("H", 2.20, 1.008), ("Na", 0.93, 22.98976928), ("Mg", 1.31, 24.305), ("Li", 0.98, 6.94)]
get_elements = operator.itemgetter(2)
sort_elements = sorted(chemical_elements, key=get_elements)
print(sort_elements)У цьому коді ми сортуємо список за кожним другим елементом у кортежах, тобто ми сортуємо список за значеннями атамної маси у кортежах.
[('H', 2.2, 1.008), ('Li', 0.98, 6.94), ('Na', 0.93, 22.98976928), ('Mg', 1.31, 24.305)]Тепер сортуємо за першим елементом у кортежах (тобто за електронегативністю):
chemical_elements = [("H", 2.20, 1.008), ("Na", 0.93, 22.98976928), ("Mg", 1.31, 24.305), ("Li", 0.98, 6.94)]
get_elements = operator.itemgetter(1)
sort_elements = sorted(chemical_elements, key=get_elements)
print(sort_elements)[('Na', 0.93, 22.98976928), ('Li', 0.98, 6.94), ('Mg', 1.31, 24.305), ('H', 2.2, 1.008)]Приклади роботи зі словниками
Тепер перейдемо до роботи зі словниками. Тут так само є можливість вибирати більше одного значення за ключами. Тобто, якщо зазвичай ми могли брати лише одне значення, то тепер itemgetter() знову знімає це обмеження.
Ось приклад коду, де ми взяли три значення за ключами:
import operator
tasks = {"Monday": "Training",
"Tuesday": "Chess learning",
"Wednesday": "Studying",
"Thursday": "Go on the concert",
"Friday": "Football game",
"Saturday": "Room cleaning",
"Sunday": "Go to park"}
get_values = operator.itemgetter("Sunday", "Saturday", "Friday")
print(get_values(tasks))('Go to park', 'Room cleaning', 'Football game')Таким чином, ми можемо брати більше одного значення зі словника. Як бачимо, у даному випадку ми взяли одразу три значення за ключами.
Висновок
У рамках даної статті ми навчилися працювати із класом itemgetter(), використовуючи різні типи даних. Крім того, ми розглянули те, чим є itemgetter() та приділили увагу синтаксичній особливості використання.
Всім дякую за увагу!