10 полезных методов словаря Python

Вы хотите научиться работать со словарями 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 от toadmin.ru.

>>> 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() возвращает список кортежей «ключ-значение». Таким образом, вызов этого метода в словаре пользователя возвращает список кортежей «ключ-значение»:

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

Получить неглубокую копию с помощью функции copy()

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

>>> person_cpy = person.copy()

Здесь person_cpy — это неглубокая копия словаря человека. Давайте изменим эту копию, изменив ключ «имя» на «Боб».

>>> 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() вместо доступа к значению, как указано выше.

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

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

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

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

Здесь ключ «адрес» отсутствует в словаре человека. Но мы видим, что он был добавлен со значением по умолчанию None.

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

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

>>> 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() возвращает значение, соответствующее ключу. Он также необязательно принимает другое значение по умолчанию, которое возвращается, если ключ не найден в словаре.

Когда мы пытаемся получить доступ к значению ключа «имя», мы получаем «Алиса», поскольку ключ присутствует лично:

>>> 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, но ключ в словарь не добавляется.

Вы также можете использовать defaultdict в Python для лучшей обработки KeyErrors.

Обновить содержимое словаря с помощью update()

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

Давайте определим словарь more_details. Затем мы обновляем словарь person содержимым из словаря 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() для словаря person возвращает пару «ключ-значение» («нравится», «сладости») — последний добавленный элемент в словарь.

Он также удаляет пару ключ-значение. Вы можете убедиться в этом, изучив содержимое словаря:

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

Удалить элемент словаря с помощью pop()

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

Для этого мы можем использовать метод словаря 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() для словаря человека удаляет все пары ключ-значение, и словарь человека становится пустым.

Краткое изложение методов словаря Python

Вот краткий обзор методов словаря Python, которые мы изучили.

MethodSyntaxDescriptionkeys()dict1.keys()Возвращает ключи dict1values()dict1.values() Возвращает значения dict1items()dict1.items() Возвращает список всех пар ключ-значение в dict1copy()dict1.copy() Возвращает неглубокую копию dict1setdefault()dict1.setdefault(key, default_value) — добавляет ключ с необязательным значением default_value в качестве ключа к dict1 (если не указано, значение по умолчанию — None)
— Возвращает дикт1[key] если ключ уже присутствует get()dict1.get(key,default_value) – возвращает dict1[key] если ключ присутствует в dict1; В противном случае возвращает default_value
– Если ключ отсутствует в dict1 и значение по умолчанию не указано, возвращает 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. Удачного кодирования!