10 корисних методів словника Python

| | 0 Comments| 10:27 AM
Categories:

Хочете навчитися працювати зі словниками Python? Цей підручник охопить методи словника Python для читання, зміни та виконання інших поширених операцій зі словниками Python.

Ми почнемо з огляду основ словників Python, а потім створимо приклад словника та змінимо його за допомогою методів словника Python.

Давайте розпочнемо…

Огляд словників Python

Словники — це вбудовані структури даних у Python. Це дозволяє зберігати елементи в парах ключ-значення, визначаючи асоціацію або зіставлення між ключами та значеннями.

Ключі в словнику мають бути унікальними (щоб їх можна було хешувати). Ви можете використовувати ключ для пошуку значення або використовувати вбудовані методи (незабаром ви дізнаєтесь про них).

Під час створення словника Python ви можете ініціалізувати всі пари ключ-значення або ініціалізувати порожній словник, а потім додати пари ключ-значення.

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)
<class 'dict'>

# or we can do the following:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

Методи словника Python для загальних операцій

Примітка. Щоб слідувати прикладам коду, вам потрібно встановити Python 3.7 або пізнішу версію.

Ви можете кодувати разом у Python REPL. Або слідкуйте в онлайн-редакторі Python від techukraine.net.

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

Тепер, коли ми ініціалізували словник Python, давайте почнемо розглядати різні словникові методи.

Отримайте ключі словника за допомогою keys()

Однією з поширених операцій під час роботи зі словником Python є доступ до всіх ключів, значень і пар ключ-значення. Щоб отримати ключі словника, ви можете викликати метод keys(), як показано:

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

Отримати значення словника за допомогою values()

Метод values() повертає всі значення та корисний, коли ви хочете обробити ці значення далі.

Давайте отримаємо доступ до всіх значень у словнику особи:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

Отримати пари ключ-значення за допомогою items()

Метод items() повертає список кортежів ключ-значення. Таким чином, виклик цього методу в словнику person повертає список кортежів ключ-значення:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

Отримайте поверхневу копію за допомогою copy()

Метод copy() повертає поверхневу копію словника Python.

>>> person_cpy = person.copy()

Тут person_cpy є поверхневою копією словника person. Давайте змінимо цю копію, оновивши ключ «name» на «Bob».

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

Тепер, якщо ви переглянете вміст словника, ви побачите, що «ім’я» було оновлено на «Боб».

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Однак вихідний словник особи не було змінено.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

Встановіть значення за умовчанням за допомогою setdefault()

Під час роботи зі словниками Python часто трапляється виняток KeyError, якщо ключ відсутній у словнику. Ось приклад, коли ми намагаємося отримати доступ до ключа «вік»:

>>> person['age']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Ви можете уникнути таких помилок, використовуючи вбудовані методи setdefault() і get() замість доступу до значення, як описано вище.

  Найкращі способи резервного копіювання вашого Mac

Метод setdefault(key) повертає dict[‘key’] якщо ключ присутній у dict.

>>> person.setdefault('name')
'Alice'

Якщо ключ відсутній, він додає ключ до словника зі значенням за замовчуванням Немає.

>>> person.setdefault('address')
>>> person

Тут ключ «адреса» відсутній у словнику особи. Але ми бачимо, що його було додано зі значенням за замовчуванням «Немає».

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

Тепер ми можемо встановити ключ «address» на певну адресу:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

Ви також можете вказати значення у виклику методу, як показано:

>>> person.setdefault('country','USA')
'USA'
>>> person

Оскільки ключ «країна» спочатку не присутній у словнику особи, ми бачимо, що його було додано зі значенням «США».

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Отримати конкретне значення за допомогою get()

Метод get() повертає значення, що відповідає ключу. Він також необов’язково приймає інше значення за замовчуванням, яке повертається, якщо ключ не знайдено в словнику.

Коли ми намагаємося отримати доступ до значення ключа «name», ми отримуємо «Alice», оскільки ключ присутній особисто:

>>> person.get('name')
'Alice'

Словник особи не має ключа «gpa». Отже, коли ми намагаємося отримати його значення, ми нічого не отримуємо в Python REPL. Однак, якщо ви роздрукуєте значення, ви отримаєте None.

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

Але якщо ви вкажете необов’язкове значення за умовчанням, ми отримаємо це значення замість None.

>>> person.get('gpa','not found')
'not found'

Однак метод get() не додає ключ ‘gpa’ до словника.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Розуміння setdefault() проти get()

Хоча методи setdefault() і get() можна використовувати для обробки KeyError, давайте підсумуємо відмінності від того, що ми дізналися:

  • dict.setdefault(key,val) додає ключ із значенням за замовчуванням val. Якщо val не вказано, ключ додається зі значенням за замовчуванням None.
  • dict.get(key,val) повертає значення, що відповідає ключу зі словника Python. Якщо ключ відсутній, повертається значення val (якщо надано) або None, але ключ не додається до словника.
  8 найкращих програм HRIS для оптимізації кадрових завдань для SMB

Ви також можете використовувати defaultdict у Python для кращої обробки KeyErrors.

Оновити вміст словника за допомогою update()

Ви можете оновити наявний словник Python, використовуючи пари ключ-значення з іншого словника. Ви також можете оновити вміст будь-якого ітерованого Python за допомогою методу update().

Давайте визначимо словник more_details. Потім ми оновлюємо словник особи вмістом зі словника more_details:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

З наведених нижче результатів ми бачимо, що ключі «хобі» та «подобається» додано до словника особи.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

Видалити останній доданий елемент за допомогою popitem()

Метод словника popitem() можна використовувати для видалення останньої доданої пари ключ-значення.

>>> person.popitem()
('likes', 'sweets')

Як видно, виклик методу popitem() у словнику користувача повертає пару ключ-значення (‘likes’, ‘sweets’) — останній доданий елемент у словнику.

Він також видаляє пару ключ-значення. Переконатися в цьому можна, ознайомившись зі змістом словника:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

Видалення елемента словника за допомогою pop()

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

  10 найкращих програм Wear OS для завантаження на ваш розумний годинник у 2022 році

Для цього ми можемо використати метод словника Python pop(): використання .pop(key) у словнику повертає значення, що відповідає ключу, а також видаляє пару ключ-значення зі словника.

Ось приклад:

>>> person.pop('hobby')
'singing'

Коли ми витягли елемент, який відповідає ключу «хобі», ми побачили, що його більше немає в словнику.

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

Якщо ми передаємо ключ, якого не існує, ми стикаємося з винятком KeyError, як показано:

>>> person.pop('age')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'age'

Тут ми стикаємося з винятком KeyError, оскільки ключ «вік» відсутній у словнику особи.

На відміну від методу list pop(), який за замовчуванням видаляє останній елемент, словниковий метод pop() потребує ключа. Якщо ви не вкажете ключ у методі, ми зіткнемося з помилками.

>>> person.pop()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: pop expected at least 1 argument, got 0

Видалити всі словникові елементи за допомогою clear()

Методи словника pop() і popitem() видаляють одну пару ключ-значення за раз. Якщо ви хочете видалити всі елементи зі словника, ви можете скористатися методом clear().

>>> person.clear()
>>> person
{}

Як видно, виклик методу clear() у словнику person видаляє всі пари ключ-значення, і словник person тепер порожній.

Короткий опис методів словника Python

Ось короткий огляд методів словника Python, які ми вивчили.

MethodSyntaxDescriptionkeys()dict1.keys()Повертає ключі dict1values()dict1.values()Повертає значення dict1items()dict1.items()Повертає список усіх пар ключ-значення в dict1copy()dict1.copy() Повертає поверхневу копію dict1setdefault()dict1.setdefault(key, default_value) – Додає ключ із необов’язковим default_value як ключ до dict1 (якщо не вказано, значенням за замовчуванням є None)
– Повертає dict1[key] якщо ключ уже присутній get()dict1.get(key,default_value)– повертає dict1[key] якщо ключ присутній у dict1; Інакше повертає default_value
– Якщо ключ відсутній у dict1 і default_value не вказано, повертає Noneupdate()dict1.update(iterable1)Оновлює dict1 парами ключ-значення з iterable1popitem()dict1.popitem()Видаляє та повертає останню пару ключ-значення з dict1pop()dict1.pop(key) – Вилучає та повертає значення, що відповідає ключу: dict1[key]
– Викликає KeyError, якщо ключ відсутній у dict1clear()dict1.clear()Видаляє всі елементи з dict1

Висновок

Ви навчилися використовувати загальні методи для виконання операцій читання, оновлення та видалення словників Python. Крім того, ви також дізналися, як методи get() і setdefault() можна використовувати для обробки винятків KeyError шляхом повернення значення за замовчуванням і додавання запису зі значенням за замовчуванням до словника Python відповідно. Ви також можете сортувати словник Python за ключем або значенням.

Далі перегляньте список корисних методів списку Python. Щасливого кодування!