Документация по Python. Теоретические материалы, и практические задачи

Методы словаря Python

В этой статье, собраны все методы словаря python, если какой либо метод отсутствует, буду благодарен если сообщите в комментариях.

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

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

  • Не принимает никаких параметров
  • Кроме значения None, больше ничего не возвращает

Применение метода 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() работает практически одинаково как  со словарем, так и со списком.

  • Метод copy() — не принимает никаких аргументов
  • Метод copy() — возвращает копию из словаря, при этом оригинальный словарь остается неизменным

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

                    
original = {1:'one', 2:'two'}
new = original.copy()

print('Оригинал: ', original)
print('Новый: ', new)

В статье про методы списков python мы уже писали про метод copy() и знак «=». Возможно у вас возникнет вопрос, в чем разница копирования между методом 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() принимает два параметра:

  • sequence — последовательность элементов, которые будут представлять собой ключи для словаря
  • value — необязательное значение, которое устанавливается для каждого элемента словаря

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

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

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

                    

keys = {‘a’, ‘e’, ‘i’, ‘o’, ‘u’ }

vowels = dict.fromkeys(keys)

print(vowels)

#Результат

{'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() имеет следующий вид:

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

  • key — Ключ для поиска
  • value — необязательный параметр, значение которое должно быть возвращено. Значение по умолчанию равно None.

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

  • Значение key, если он находится в словаре
  • None — если key не найден в словаре
  • Value — если ключ найден в словаре

Пример 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[ключ]? 

  • Метод get() — Вернет значение None если искомый ключ не найден в словаре
  • dict[ключ] — Вызовет исключение KeyError, если искомый ключ не обнаружен в словаре
                    
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()

Параметры метода 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() принимает два параметра:

  • key — ключ, который необходимо найти для удаления
  • default — значение которое надо вернуть, если искомый ключ не найден в словаре

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

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

  • Если key найден, возвращается значение удаленного элемента
  • Если key не найден, возвращается значение указанное по умолчанию, обычно None
  • Если key не найден, и при этом не указан аргумент по умолчанию, появится исключительная ошибка KeyError.

Пример 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() 

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

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

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

  • popitem() — удаляет и возвращает последнюю пару (ключ, значение) из словаря

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

                    
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() принимает два значения:

  • Key — ключ для поиска в словаре
  • default_value — необязательный параметр, если нет искомого ключа, ключ с указанным значением будет вставлен в словарь. Если значение пустое, передается значение None

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

  • Значение параметра key, если он присутствует в словаре
  • None — если искомый ключ отсутствует в словаре, и не указано значение по умолчанию
  • default_value — если искомый ключ не найден, и указано значение по умолчанию

Пример 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()

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

  • Принимает в качестве аргумента словарь/кортеж
  • Если метод 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()

Параметры метода 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])
  • Метод values() возвращает список всех значений словаря
  • Если список обновляется, то обновления отражаются в возвращаемых значениях

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *