Урок 16. Словники у Python

У Python словники — це один з основних типів даних, які дозволяють зберігати колекції елементів у формі пар “ключ-значення”. Це дуже гнучкий і зручний спосіб зберігання даних, який часто використовується для організації інформації. Приклад з відео:

#Словники використовуються для зберігання значень даних у парах ключ:значення.
#Словник — це збірка, яка є впорядкованою, змінною та
#не допуска' дублікатів.
#Починаючи з версії Python 3.7, словники впорядковані.
#У Python 3.6 і попередніх версіях словники були не впорядковані.
carDictionary1 = {
    "brand": "Dodge",
    "model": "Charger",
    "year": 2020
    }
print(carDictionary1)

У Python словники складаються з пар “ключ-значення”, і кожен з цих елементів має свої особливості.

Ключ (Key): Це унікальний ідентифікатор для кожного елемента в словнику. Ключі повинні бути незмінними типами даних, такими як рядки, числа або кортежі. Ключі мають бути унікальними в межах одного словника.

Значення (Value): Це дані, які асоційовані з ключем. Значення можуть бути будь-якого типу даних, включаючи інші словники, списки або навіть функції.

Приклад з відео:

#Елементи словника впорядковані, змінні та не
#дозволяють дублікати.
#Елементи словника представлені в парах ключ:значення і
#до них можна звертатися за допомогою імені ключа.
carDictionary1 = {
    "brand": "Dodge",
    "model": "Charger",
    "year": 2020
    }

print(carDictionary1["brand"])

У словниках Python ключі завжди унікальні. Це означає, що ви не можете мати два однакових ключі в одному словнику. Якщо ви спробуєте додати новий ключ, який вже існує в словнику, старе значення буде перезаписано новим значенням. Приклад з відео:

#Словники не можуть мати два елементи з однаковим ключем
#Дубльовані значення перезапишуть наявні значення
carDictionary = {
    "brand": "Dodge",
    "model": "Charger",
    "year": 2019,
    "year": 2020
    }

print(carDictionary)

Довжина словника

Довжина словника в Python визначається кількістю пар ключ-значення, які він містить. Щоб отримати цю довжину, можна скористатися функцією len(). Приклад з відео:

#Щоб визначити, скільки елементів містить словник, використовуйте
#функцію len().
carDictionary = {
    "brand": "Dodge",
    "model": "Charger",
    "year": 2020
    }

lengthOfDictionary = len(carDictionary)
print(carDictionary)
print(lengthOfDictionary)

Типи даних елементів у словниках

У словниках Python можна використовувати різноманітні типи даних. Приклад з відео:

#Значення в елементах словника можуть мати будь-який тип даних
carDictionary = {
    "brand": "Dodge",
    "electric": False,
    "year": 2020,
    "colors": ["yellow","blue","orange", "black", "white"]
    }

print(carDictionary)

Функція type() та словники

Функція type() у Python використовується для визначення типу об’єкта. Коли ви використовуєте цю функцію з словниками, вона поверне, що об’єкт є словником (dict). Приклад з відео:

#словники визначаються як об'єкти з типом даних "dict"
carDictionary = {
    "brand": "Dodge",
    "model": "Charger",
    "year": 2020
    }

print(carDictionary)
print(type(carDictionary))

Конструктор dict()

Конструктор dict() у Python створює новий словник. Він є універсальним способом для ініціалізації словників і може приймати різні типи вхідних даних. Приклад з відео:

#Також можна використовувати конструктор dict()
#щоб створити словник
carDictionary = dict(brand="Dodge", model="Charger", year=2020)
print(carDictionary)
print(type(carDictionary))

Доступ до елементів словника

Доступ до елементів словника у Python здійснюється за допомогою ключів. Словники в Python є колекціями пар ключ-значення. Щоб отримати значення, що відповідає певному ключу, ви використовуєте квадратні дужки [] або метод .get(). Приклад з відео:

#Ви можете отримати доступ до елементів словника, посилаючись на
#його ключове ім'я в квадратних дужках
#Існує також метод під назвою get(), який надасть вам
#той же результат
carDictionary = dict(brand="Dodge", model="Charger")
brandExtract = carDictionary["brand"]
modelExtract = carDictionary.get("model")
print(carDictionary)
print(brandExtract)
print(modelExtract)

Метод keys()

Метод keys() у словниках Python використовується для отримання видимих ключів словника. Він повертає вью-об’єкт (dict_keys), який є динамічним і відображає ключі словника в момент виклику. Приклад з відео:

#метод keys() поверне список усіх ключів
#в словнику
carDictionary=dict(brand="Dodge", model="Charger")
keysCarDictExtract = carDictionary.keys()
print(carDictionary)
print(keysCarDictExtract)
#додаванння нової key=value пари до словника
carDictionary["year"]=2020
print(carDictionary)
print(keysCarDictExtract)

Метод values()

Метод values() у словниках Python використовується для отримання всіх значень, які відповідають ключам словника. Він повертає вью-об’єкт (dict_values), який є динамічним і відображає значення словника на момент виклику. Приклад з відео:

#Метод values() поверне список усіх значень
#в словнику.
carDictionary = dict(brand="Dodge", model="Charger")
valuesExtract = carDictionary.values()
print(carDictionary)
print(valuesExtract)
#додавання новї key=value пари
carDictionary["year"]=2020
print(carDictionary)
print(valuesExtract)

Метод items()

Метод items() у словниках Python використовується для отримання всіх пар ключ-значення з словника. Він повертає вью-об’єкт (dict_items), який є динамічним і відображає пари ключ-значення словника на момент виклику. Приклад з відео:

#метод items() поверне кожен елемент у словнику,
#як кортежі в списку
carDictionary=dict(brand="Dodge", model="Charger")
itemsExtract = carDictionary.items()
print(carDictionary)
print(itemsExtract)
#додавання нової key=value пари
carDictionary["year"]=2020
print(carDictionary)
print(itemsExtract)

Перевірка наявності елементів

За допомогою ключового слова “in” можна перевірити наявність певного ключа у словнику. Приклад з відео:

# Щоб визначити, чи присутній вказаний ключ у словнику
#використовуйте ключове слово "in".
carDictionary = {
    "brand": "Dodge",
    "model": "Charger",
    "year": 2020
    }
print(carDictionary)
if "brand" in carDictionary:
    print("Key 'brand' is present in dictionary")
    
else:
    print("Key 'brand' is not present in dictionary")

Зміна значень у словниках

Для заміни значення у словнику потрібно звернутися за відповідним ключем і вказати нове значення. Приклад з відео:

#Ви можете змінити значення певного елемента шляхом посилання
#на назву ключа
carDictionary = dict(brand="Dodge", model="Charger", year=2020)
print(carDictionary)
carDictionary["model"]="Challenger"
carDictionary["year"]=2021
print(carDictionary)

Метод update() у словниках

Метод update() у словниках Python використовується для оновлення словника новими парами ключ-значення. Він дозволяє додати нові пари або оновити існуючі пари ключ-значення в словнику. Приклад з відео:

#метод update() оновить словник елементами
#від заданого аргументу.
#Якщо елемент не існує, його буде додано.
#Аргументом має бути словник або ітерований об’єкт
#з парами ключ:значення.
carDictionary = dict(brand="Dodge", model="Charger")
print(carDictionary)
carDictionary.update({"model":"Challenger"})
carDictionary.update({"year":2020})
print(carDictionary)

Методи pop() and popitem()

Метод pop() у словниках Python використовується для видалення пари ключ-значення з словника за допомогою вказаного ключа і повернення значення, яке відповідало цьому ключу. Це дозволяє не тільки видаляти елементи, але й отримувати їх значення.

Метод popitem() у словниках Python використовується для видалення і повернення останньої вставленої пари ключ-значення з словника. Цей метод є корисним, коли потрібно витягнути та видалити останній елемент словника в його порядку вставки.

Приклад з відео:

#метод pop() видаляє елемент із вказаною назвою ключа
#метод popitem() видаляє останній вставлений елемент
#(у версіях до 3.7 замість цього видаляється випадковий елемент)
carDictionary=dict(brand="Car", model="Some model", year=2000)
print(carDictionary)
carDictionary.pop("year")
print(carDictionary)
carDictionary.popitem()
print(carDictionary)

del та clear()

Ключове слово del у Python використовується для видалення об’єктів, включаючи елементи з словників. Коли ви використовуєте del з словниками, ви можете видаляти конкретні пари ключ-значення або навіть сам словник.

Метод clear() у словниках Python використовується для видалення всіх пар ключ-значення з словника, очищаючи його повністю. Після виклику clear(), словник залишається існуючим, але він стає порожнім.

Приклад з відео:

#ключове слово del може видалити елемент із вказаною назвою ключа
#ключове слово #del також може повністю видалити словник
#метод clear() очищає словник
carDictionary = dict(brand="Car", model="Some model", year=2000)
print(carDictionary)
del carDictionary["year"]
print(carDictionary)
carDictionary.clear()
print(carDictionary)
del carDictionary
#print(carDictionary)

Цикл for та словники

Цикл for у Python дозволяє ітеруватися по словниках різними способами, щоб обробити їх ключі, значення або пари ключ-значення. Приклад з відео:

#Ви можете переглядати словник за допомогою циклу for
carDictionary = dict(brand="Dodge", model="Charger")
print("option 1 - loop through keys")
for carkey in carDictionary:
    print(carkey)
print("option 2 - loop through values")
for carkey in carDictionary:
    print(carDictionary[carkey])
print("option 3 - use values method")
for car in carDictionary.values():
    print(car)
print("option 4 - use keys method")
for carkey in carDictionary.keys():
    print(carkey)
print("option 5 - use items method")
for carkey, car in carDictionary.items():
    print(carkey, car)

Копія словника

Для створення копії словника можна використати метод copy() або конструктор. Приклад з відео:

#Ви не можете скопіювати словник, просто ввівши dictionary2 = dictionary1,
#бо: dictionary2 буде лише посиланням на dictionary1,
#і зміни, зроблені в dictionary1, автоматично також будуть внесені в dictionary2.
#Ви можете використовувати метод copy() або конструктор, щоб створити копію словника.
carDictionary1 = dict(brand="Dodge", model="Charger")
carDictionary2 = carDictionary1.copy()
carDictionary3 = dict(carDictionary2)
print(carDictionary1)
print(carDictionary2)
print(carDictionary3)
carDictionary1["year"]=2020
carDictionary2["color"]="yellow"
print(carDictionary1)
print(carDictionary2)
print(carDictionary3)

Вкладені словники у Python

Вкладені словники у Python — це словники, які містять інші словники як свої значення. Вони дозволяють створювати складні структури даних для зберігання і організації інформації. Приклад з відео:

#Словник може містити словники, це називається вкладеними словниками
carPark = {
    "car1":{
        "brand":"Dodge",
        "model": "Charger"
        },
    "car2":{
        "brand": "Ford",
        "model": "Mustang"
        }    
    }

print(carPark["car1"]["brand"])
print(carPark["car1"]["model"])
print(carPark["car2"]["brand"])
print(carPark["car2"]["model"])

# for car in carPark:
#     for carIn in carPark[car]:
#         print(carPark[car][carIn])

Приклад з відео з кількома вкладеними словниками:

#ви можете додати кілька словників у новий словник
car1 = {
    "brand": "Dodge",
    "model": "Charger"
    }
car2 = {
    "brand": "Ford",
    "model": "Mustang"
    }
carPark = {
    "car1": car1,
    "car2": car2
    }
for car in carPark:
    for carIn in carPark[car]:
        print(carPark[car][carIn])
Урок 16. Словники у Python

В цьому відео поговоримо про:
00:13 Python Dictionary – Словник
02:02 Dictionary Items – Елементи словників
03:26 Duplicates and Dictionaries – Дуплікати і словники
04:54 Dictionary Length – Довжина словника
06:35 Data Types – Типи даних
07:40 type() функція
08:40 dict() конструктор
11:47 Accessing Dictionary Items – Доступ до елементів словника
14:30 keys() метод
18:00 values() метод
20:47 items() метод
23:29 Check if key exists – Перевірка чи є ключ
26:17 Change values in dictionary – Зміна значень у словниках
27:54 update() метод
30:24 pop() and popitem() методи
33:22 del and clear() – ключове слово del та метод clear()
38:21 Dictionary and for loop – Словник і цикл for
44:35 Copy Dictionary – Копіювання словника
47:53 Nested Dictionary – Вкладений словник

Приклади на Github

Leave a Reply

Your email address will not be published. Required fields are marked *