Словники і їхні методи
Словники і їхні методи
Словники — змінюваний тип даних, що містить у собі пари «ключ»: «значення». Тобто дані всередині словника є іменованими та невпорядкованими, а отримати значення можна потягнувши за ниточку, якою є ключ. Створимо словник:
Перший словник готовий, але, як бачимо, він пустий. Тому створимо ще один, але наповнений елементами:
my_dict = {}
my_dict_2 = {"Macbook" : "Pro", "Developer" : "Nick", "Iphone": 1}
print(my_dict)
print(my_dict_2)
Отримаємо (відео 1):
Відео 1
Тепер, коли маємо наповнений словник, дістанемо дані з нього. Для цього звернемося до словника за ключем:
my_dict = {}
my_dict_2 = {"Macbook" : "Pro", "Developer" : "Nick", "Iphone" : 1}
value = my_dict_2["Macbook"]
print(value)
Запустимо код (відео 2):
Відео 2
Схожий синтаксис використовується і для додавання елементів:
my_dict = {}
my_dict_2 = {"Macbook": "Pro", "Developer" : "Nick", "Iphone" : 1}
key = "fruit"
value = "orange"
my_dict_2[key] = value
print(my_dict_2)
Результат (відео 3):
Відео 3
Звісно, використовувати змінні, як у наведеному прикладі, зовсім необов'язково, замість них у квадратні дужки можна просто ввести дані, що будуть ключем, а після знаку «=» ввести значення.
З допомогою методу update() можна внести елементи з іншого словника, який передається всередину дужок:
my_dict = {"Developer" : "Ann"}
my_dict_2 = {"Macbook" : "Pro", "Developer" : "Nick", "Iphone" : 1}
my_dict.update(my_dict_2)
print(my_dict)
print(my_dict_2)
Виконаємо код (відео 4):
Відео 4
Але треба бути обережним, користуючись цим методом, адже, як видно, за його використання, значення перезаписуються.
Створити словник можна також з допомогою методу dict.fromkeys(), у який необхідно передати два елементи. Перший буде використано як ключ, причому, якщо передати масив даних, ключами стануть окремі елементи масиву. Другим елементом є значення. Треба зазначити, що всі ключі отримають однакове значення. Запишемо:
Отримали словник (відео 5):
Відео 5
Якщо ж у дужки передати один елемент, ключі генеруватимуться так само, але набудуть значення None, тобто пустоти:
Якщо запустити код, побачимо (відео 6):
Відео 6
Під час роботи зі словниками можна окремо отримати значення ключів. Це завдання реалізовується використанням методу keys():
Отримаємо (відео 7):
Відео 7
Аналогічно до ключів, окремо можна отримати значення. Цьому посприяє метод values():
Маємо (відео 8):
Відео 8
Оскільки окремо можна отримати ключі та значення, то можна й пари «ключ»: «значення» скориставшись методом items():
Отримаємо (відео 9):
Відео 9
Часто словники мають дуже великий об'єм і постає необхідність перевірити наявність ключа. Якщо ми виведемо значення ключа, що не існує в словнику, знайомим способом, отримаємо помилку. Щоби уникнути помилок використовуються методи get() і setdefault(). Різниця між ними полягає в тому, що за відсутності шуканого ключа, перший поверне None, а другий створить шуканий ключ і присвоїть йому значення None. Перевіримо роботу методів, записавши:
my_dict = {"Macbook" : "Pro", "Developer" : "Nick", "Iphone" : 1}
print(my_dict.get("Developer"))
print(my_dict.get("Key"))
print(my_dict)
print(my_dict.setdefault("Developer"))
print(my_dict.setdefault("Key"))
print(my_dict)
Запустимо код (відео 10):
Відео 10
Словники, як і деякі інші типи даних мають метод pop(), та в цьому випадку відрізняються необхідністю передачі ключа всередину дужок. Якщо ж передати ключ, що не існує, виникне помилка:
my_dict = {"Macbook" : "Pro", "Developer" : "Nick", "Iphone" : 1}
print(my_dict)
print(my_dict.pop("Macbook"))
print(my_dict)
print(my_dict.pop("Key"))
Маємо (відео 11):
Відео 11
А ось метод popitem() видаляє зі словника пару «ключ»: «значення» повертаючи їх. Запишемо:
my_dict = {"Macbook" : "Pro", "Developer" : "Nick", "Iphone" : 1}
print(my_dict.popitem())
print(my_dict)
Запустимо код (відео 12):
Відео 12
Отже, зі словниками та їхніми методами розібрались, настав час використати нові знання на практиці.
Журнал юзера
Створимо журнал юзера. З допомогою цього журналу можна швидко дізнатися номер телефону або посилання на соціальні мережі ваших знайомих (мал. 1).
Для виконання поставленого завдання створимо словник, ключами якого будуть імена, значення яких теж будуть словниками:
Як ви вже здогадались, якщо звернутися до будь-якого з ключів, одержимо значення у вигляді пустого словника. Тому необхідно наповнити його інформацією:
my_dict = {"Nick" : {"Phone" : "0735558895", "instagram" : "@nick465", "tiktok" : "@nicklike"}, "Ann" : {"Phone" : "0995588401", "instagram" : "@ann582", "tiktok" : "@ann_02"}, "Jane": {"Phone" : "0505314589", "instagram" : "@jane_me", "tiktok" : "@janeforme"}}
Тепер, маючи контакти, лишається створити змінну, яка й буде виведена при отриманні запиту від користувача й вміщуватиме цільову інформацію. Сам запит створюється введенням користувачем ключа з допомогою input() і наступним зверненням до словника по ньому:
my_dict = {"Nick" : {"Phone" : "0735558895", "instagram" : "@nick465", "tiktok" : "@nicklike"}, "Ann" : {"Phone" : "0995588401", "instagram" : "@ann582", "tiktok" : "@ann_02"}, "Jane": {"Phone" : "0505314589", "instagram" : "@jane_me", "tiktok" : "@janeforme"}}
Запустивши код, маємо (відео 13):
Відео 13
Отже, звернувшись за іменем, одержуємо дані контакту. Оскільки нам потрібна більш конкретна інформація, повторно додамо квадратні дужки з input() всередині, щоби звернутись до отриманого словника за іншим ключем та повернути кінцеві дані:
my_dict = {"Nick" : {"Phone" : "0735558895", "instagram" : "@nick465", "tiktok" : "@nicklike"}, "Ann" : {"Phone" : "0995588401", "instagram" : "@ann582", "tiktok" : "@ann_02"}, "Jane": {"Phone" : "0505314589", "instagram" : "@jane_me", "tiktok" : "@janeforme"}}
user = my_dict[input()][input()]
print(user)
Запустимо код (відео 14):
Відео 14
Але проблема нашої програми в тому, що користувач не знає, що саме має вводити, а тому додамо підказки у функції input(). Кінцевий код програми набуде вигляду:
my_dict = {"Nick" : {"Phone" : "0735558895", "instagram" : "@nick465", "tiktok" : "@nicklike"}, "Ann" : {"Phone" : "0995588401", "instagram" : "@ann582", "tiktok" : "@ann_02"}, "Jane": {"Phone" : "0505314589", "instagram" : "@jane_me", "tiktok" : "@janeforme"}}
user = my_dict[input("Enter a name ")][input("Enter the contact type ")]
print(user)
Перевіримо роботу програми (відео 15):
Відео 15
Тож, сьогодні ми розглянули словники та їхні методи, чим завершили розгляд базових типів даних. Отримали практичні навички роботи з ними, створивши журнал юзера.
На наступному занятті дізнаємось багато нового, навчившись перетворювати дані одного типу в інший.