Python: уроки, справочник и задачи

Методы словаря в Python 3 с примерами

Раздел: Словари в Python · Обновлено 31.10.2026

Методы словаря Python позволяют читать, добавлять, удалять и копировать пары ключ-значение без лишних циклов и проверок. Ниже разобраны все методы типа dict: clear(), copy(), fromkeys(), get(), items(), keys(), pop(), popitem(), setdefault(), update() и values(). Для каждого показан синтаксис, что он возвращает и в каких случаях вызывает ошибку.

Методы словаря в Python 3 с примерами
Фото: Dr. Marcus Gossler / CC BY-SA 3.0, Wikimedia Commons
Содержание статьи
  1. Очистка словаря Python
  2. Копирование словаря Python
  3. Dict fromkeys
  4. Python dict get
  5. Python dict items
  6. Python dict keys
  7. Python dict pop
  8. Python dict popitem
  9. Python dict setdefault
  10. Dict update
  11. Python dict values
  12. Сводная таблица методов dict
  13. Операторы | и |= для объединения словарей
  14. Частые вопросы

Очистка словаря Python

Метод clear() призван удалять все данные из словаря Python. Данный метод имеет достаточно простую логику работы.

Применение метода clear()

d = {1: "one", 2: "two"}
d.clear()
print('d =', d)
#Результат
d = {}

Копирование словаря Python

Для копирования словаря, так же как и в методах списка, есть отличный метод copy().

original_marks = {'Physics':67, 'Maths':87}
copied_marks = original_marks.copy()
print('Оригинальный словарь:', original_marks)
print('Скопированный:', copied_marks)
# Результат: Оригинальный словарь: {'Physics': 67, 'Maths': 87}
# Скопированный словарь: {'Physics': 67, 'Maths': 87}

Синтаксис метода copy() работает практически одинаково как со словарем, так и со списком.

dict.copy()

Пример 1. Как скопировать словарь?

original = {1:'one', 2:'two'}
new = original.copy()
print('Оригинал: ', original)
print('Новый: ', new)

В статье про методы списков python мы уже писали про метод copy() и знак"=". Возможно у вас возникнет вопрос, в чем разница копирования между методом copy() и оператором присваивания "=".

Пример 2. Оператор "=" для копирования

original = {1:'one', 2:'two'}
new = original
# Очистим элементы из нового словаря
new.clear()
print('Новый: ', new)
print('Оригинал: ', original)
#Результат
new:  {}
original:  {}

Как видите, в данном случае мы очистили словарь new, и вместе с ним был очищен и original словарь.

Пример 3. Метод copy() для копирования словарей

original = {1:'one', 2:'two'}
new = original.copy()
# Очищаем словарь
new.clear()
print('new: ', new)
print('original: ', original)
#Результат
new:  {}
original:  {1: 'one', 2: 'two'}

На данном примере мы видим, что даже при очистке словаря new, оригинальный словарь original остался неизменным.

Dict fromkeys

Метод fromkeys() - предназначен для генерации нового словаря. Новый словарь генерируется из заданной последовательности элементов, и значениями предоставленными пользователем.

Синтаксис метода fromkeys():

dictionary.fromkeys(sequence[, value])

Метод fromkeys() принимает два параметра:

Метод fromkeys() возвращает новый сгенерированный словарь, где ключами являются заранее заданные последовательности элементов.

Если данному методу передается аргумент value, то каждому элементу присваивается так и значение указанное в параметре value.

Пример 1. Создаем словарь из последовательных элементов

{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}

Пример 2. Создаем словарь с ключом и со значением

# vowels keys
keys = {'a', 'e', 'i', 'o', 'u' }
value = 'vowel'
vowels = dict.fromkeys(keys, value)
print(vowels)
#Результат
{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}

Пример 3. Создаем словарь из списка

keys = {'a', 'e', 'i', 'o', 'u' }
value = [1]
vowels = dict.fromkeys(keys, value)
print(vowels)
# Обновляем значение
value.append(2)
print(vowels)
#Результат
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
{'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2]}

Python dict get

Метод словаря get(), вернет значение ключа, если искомый ключ находится в словаре.

marks = {'Physics':67, 'Maths':87}
print(marks.get('Physics'))
# Результат: 67

Синтаксис метода get() имеет следующий вид:

dict.get(key[, value])

Параметры метода get()

Параметры возврата метода get()

Пример 1. Пример использование метода get()

person = {'name': 'Phill', 'age': 22}
print('Name: ', person.get('name'))
print('Age: ', person.get('age'))
# value is not provided
print('Salary: ', person.get('salary'))
# value is provided
print('Salary: ', person.get('salary', 0.0))
#Результат
Name:  Phill
Age:  22
Salary:  None
Salary:  0.0

В чем различие между методом get() и dict[ключ]?

person = {}
# Используем метод get()
print('Salary: ', person.get('salary'))
# Используем dict[ключ]
print(person['salary'])
#Результат
Salary:  None
Traceback (most recent call last):
  File "", line 7, in 
    print(person['salary'])
KeyError: 'salary'

Python dict items

Метод словаря items() - предназначен для формирования списка пар кортежей словаря(ключ,значение).

marks = {'Physics':67, 'Maths':87}
print(marks.items())
# Результат: dict_items([('Physics', 67), ('Maths', 87)])

Синтаксис метода items()

dictionary.items()

Параметры метода items()

Пример 1. Получаем все элементы словаря с помощью items()

sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
print(sales.items())
 #Результат
dict_items([('apple', 2), ('orange', 3), ('grapes', 4)])

Пример 2. Как работает метод items() если меняет словарь?

sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
items = sales.items()
print('Оригинальный словарь:', items)
# Удаляем один элемент
del[sales['apple']]
print('Обновленный словарь:', items)
#Оригинальный словарь: dict_items([('apple', 2), ('orange', 3), ('grapes', 4)])
Обновленный словарь: dict_items([('orange', 3), ('grapes

Как мы видим, если происходит какое-то обновление, изменения отражаются со внесенными изменениями.

Python dict keys

Метод словаря keys() - возвращает объект содержащий список всех ключей словаря.

Параметры метода keys()

Метод keys() не принимает никаких параметров

Возвращаемые значения

Метод keys() - возвращает список всех ключей содержащихся в словаре. В случае если происходит изменение списка, эти изменения также отражаются в получаемом списке ключей.

Пример 1. Как работает метод keys()?

person = {'name': 'Phill', 'age': 22, 'salary': 3500.0}
print(person.keys())
empty_dict = {}
print(empty_dict.keys())
#Результат
dict_keys(['name', 'salary', 'age'])
dict_keys([])

Пример 2. Как работает keys() при обновлении словаря?

person = {'name': 'Phill', 'age': 22, }
print('Перед обновлением')
keys = person.keys()
print(keys)
# Обновление
person.update({'salary': 3500.0})
print('\nПосле обновления')
print(keys)

Как мы видим, при обновлении словаря, мы получаем автоматически обновленный список ключей словаря.

Python dict pop

Метод pop() словаря работает аналогично методу pop() списка. Данный метод удаляет, и затем возвращает значение элемента имеющего заданный ключ.

marks = { 'Physics': 67, 'Chemistry': 72, 'Math': 89 }
element = marks.pop('Chemistry')
print(element)
# Результат: 72

Синтаксис метода pop()

dictionary.pop(key[, default])

Параметры метода pop()

Метод словаря pop() принимает два параметра:

Возвращаемое значение метода pop()

Метод словаря pop() возвращает следующие параметры:

Пример 1. Выбор элемента из словаря

sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
element = sales.pop('apple')
print('Возвращаемый элемент:', element)
print('Обновленный словарь:', sales)
#Результат
Возвращаемый элемент: 2
Обновленный словарь: {'orange': 3, 'grapes': 4}

Пример 2. Выбор несуществующего элемента

sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
element = sales.pop('guava')
#Результат
KeyError: 'guava'

В данном случае, мы указали несуществующий ключ, и при этом не указали значение по умолчанию, соответственно была вызвана ошибка KeyError.

Пример 3. Несуществующий элемент, с указанным значением по умолчанию

sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
element = sales.pop('guava', 'banana')
print('Удаляемый элемент:', element)
print(sales)

Python dict popitem

Метод popitem() чем то схож с методом pop(). Данный метод удаляет и возвращает последнее значение словаря(ключ и значение).

Синтаксис метода popitem()

dict.popitem()

Принимаемые параметры

Метод словаря popitem(), не принимает никаких параметров.

Возвращаемые значения метода popitem()

Пример. Как работает метод popitem()?

person = {'name': 'Phill', 'age': 22, 'salary': 3500.0}
result = person.popitem()
print('Возвращаемое значение = ', result)
print('Измененный словарь = ', person)
# Добавляем новую пару
person['profession'] = 'Plumber'
# Сейчас новая пара является последним элементом
result = person.popitem()
print('Возвращаемое значение = ', result)
print('Измененный словарь = ', person)
#Результат
Return Value =  ('salary', 3500.0)
person =  {'name': 'Phill', 'age': 22}
Return Value =  ('profession', 'Plumber')
person =  {'name': 'Phill', 'age': 22}

Небольшое уточнение, если словарь будет пустым, то появится исключительная ошибка KeyError.

Python dict setdefault

Метод setdefault() - возвращает значение ключа в том случае, если искомый ключ находится в словаре. Если нет искомого ключа, он вставляет пару ключ/значение в словарь.

Синтаксис метода setdefault()

dict.setdefault(key[, default_value])

Параметры метода setdefault()

Метод словаря setdefault() принимает два значения:

Возвращаемые значения метода setdefault()

Пример 1. Когда ключ находится в словаре

person = {'name': 'Phill', 'age': 22}
age = person.setdefault('age')
print('person = ',person)
print('Age = ',age)
#Результат
person =  {'name': 'Phill', 'age': 22}
Age =  22

Пример 2. Когда ключ отсутствует в словаре

person = {'name': 'Phill'}
# Ключ отсутствует в словаре
salary = person.setdefault('salary')
print('person = ',person)
print('salary = ',salary)
# Ключ не найден в словаре
# Указано значение по умолчанию
age = person.setdefault('age', 22)
print('person = ',person)
print('age = ',age)
#Результат
person =  {'name': 'Phill', 'salary': None}
salary =  None
person =  {'name': 'Phill', 'age': 22, 'salary': None}
age =  22

Dict update

Метод словаря update() - обновляет словарь другими элементами, например из другого словаря.

marks = {'Physics':67, 'Maths':87}
internal_marks = {'Practical':48}
marks.update(internal_marks)
print(marks)
# Результат: {'Physics': 67, 'Maths': 87, 'Practical': 48}

Синтаксис метода update()

dict.update([other])

Параметры метода update()

Возвращаемые значения

Метод словаря update() обновляет данные словаря элементами из других объектов. Данный метод не возвращает ничего (None).

Пример 1. Как работает метод update()?

d = {1: "one", 2: "three"}
d1 = {2: "two"}
# Обновляет значение ключа 2
d.update(d1)
print(d)
d1 = {3: "three"}
# Добавляет элемент с ключом 3
d.update(d1)
print(d)
#Результат
{1: 'one', 2: 'two'}
{1: 'one', 2: 'two', 3: 'three'}

Пример 2. Метод update() при передаче кортежа

d = {'x': 2}
d.update(y = 3, z = 0)
print(d)
#Результат
{'x': 2, 'y': 3, 'z': 0}

Python dict values

Метод словаря values() возвращает список всех значений словаря.

Синтаксис метода словаря values()

dict.values()

Параметры метода values()

Метод словаря values() не принимает никаких параметров.

Возвращаемые значение метода values()

Метод словаря values() вернет нам объект, содержащий список всех значений словаря.

Пример 1. Получаем значения словаря

# random sales dictionary
sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
print(sales.values())
#Результат
dict_values([2, 4, 3])

Пример 2. Как работает метод values() при изменении словаря?

sales = { 'apple': 2, 'orange': 3, 'grapes': 4 }
values = sales.values()
print('Original items:', values)
# Удаляем элемент из словаря
del[sales['apple']]
print('Updated items:', values)
#Результат
Original items: dict_values([2, 4, 3])
Updated items: dict_values([4, 3])

Сводная таблица методов dict

Таблица помогает быстро выбрать нужный метод. В колонке "Меняет словарь" отмечено, изменяет ли вызов исходный объект или только возвращает данные.

МетодЧто возвращаетМеняет словарь
clear()Noneда, удаляет все пары
copy()поверхностную копиюнет
dict.fromkeys(keys, value)новый словарьнет
get(key, default)значение или defaultнет
items(), keys(), values()объект-представлениенет
pop(key, default)значение удаленного ключада
popitem()последнюю пару (ключ, значение)да
setdefault(key, default)значение ключада, если ключа не было
update(other)Noneда

Начиная с Python 3.7 словари хранят порядок добавления ключей, поэтому popitem() всегда удаляет последнюю добавленную пару, а keys() и items() выдают элементы в том же порядке. Подробнее о самом типе и способах его создания написано в статье словари в Python.

Операторы | и |= для объединения словарей

В Python 3.9 у словарей появились операторы объединения. Оператор | создает новый словарь, а |= обновляет левый словарь на месте и по действию совпадает с update(). При совпадении ключей побеждает значение из правого операнда.

base = {"host": "localhost", "port": 8000}
local = {"port": 5000, "debug": True}

config = base | local
print(config)  # {'host': 'localhost', 'port': 5000, 'debug': True}
print(base)    # {'host': 'localhost', 'port': 8000} - не изменился

base |= local
print(base)    # {'host': 'localhost', 'port': 5000, 'debug': True}

Для версий до 3.9 тот же результат дает распаковка {**base, **local}. Если нужно упорядочить результат по ключам или значениям, пригодится разбор сортировки словаря.

Частые вопросы

Короткие ответы на вопросы, которые чаще всего возникают при работе с методами словаря.

Чем get() отличается от обращения по ключу d[key]?

Запись d[key] вызывает KeyError, если ключа нет. Метод get() в этом случае возвращает None или значение из второго аргумента, поэтому подходит для необязательных полей, например при разборе JSON.

Как удалить ключ из словаря без ошибки, если его нет?

Вызовите pop() со значением по умолчанию: d.pop("key", None). Оператор del d["key"] при отсутствии ключа выбросит KeyError.

Почему изменение копии меняет исходный словарь?

copy() делает поверхностную копию: вложенные списки и словари остаются общими. Для полной независимой копии используйте copy.deepcopy() из модуля copy.

Можно ли менять словарь во время перебора items()?

Менять значения существующих ключей можно, а добавление или удаление ключей во время перебора вызовет RuntimeError: dictionary changed size during iteration. Перебирайте копию: for k, v in list(d.items()):.

Когда использовать setdefault(), а когда defaultdict?

setdefault() удобен для разовой вставки значения по умолчанию. Если словарь постоянно группирует данные по ключам, проще взять collections.defaultdict, который создает значение автоматически.