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

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

Хотите научиться работать со словарями Python? В этом руководстве будут рассмотрены методы словаря Python для чтения, изменения и выполнения других распространенных операций со словарями Python.

Мы начнем с обзора основ словарей Python, затем создадим пример словаря и изменим его, используя методы словаря Python.

Давайте начнем…

Обзор словаря Python

Словари — это встроенные структуры данных в Python. Позволяет хранить элементы в парах ключ-значение, определяя связь или сопоставление между ключами и значениями.

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

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

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


# or we can do the following:

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

Методы словаря Python для общих операций

Примечание. Чтобы следовать примерам кода, у вас должен быть установлен Python 3.7 или более поздней версии.

Вы можете кодировать вместе в Python REPL. Или следуйте инструкциям в онлайн-редакторе Python vdzvdz.

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

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

Получить ключи словаря с помощью key()

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

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

Получить значения словаря с помощью values()

Метод values() возвращает все значения и полезен, когда вы хотите обработать эти значения дальше.

Давайте получим доступ ко всем значениям в словаре лиц:

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

Получить пары ключ-значение с помощью items()

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

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

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

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

>>> person_cpy = person.copy()

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

>>> 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 "", line 1, in 
KeyError: 'age'

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

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

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

Для этого мы можем использовать метод pop() словаря Python: использование .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 "", line 1, in 
KeyError: 'age'

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

В отличие от метода pop() списка, который по умолчанию удаляет последний элемент, для метода pop() словаря требуется ключ. Если вы не укажете ключ в методе, мы столкнемся с ошибками.

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

Очистить все словарные записи с помощью clear()

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

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

Как видите, вызов метода clear() для словаря person удаляет все пары ключ-значение, и словарь person становится пустым.

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

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

MethodSyntakDescriptionkeis() dict1.keis() Возвращает ключи dict1values() dict1.values() Возвращает значения dict1items() dict1.items() Возвращает список всех пар ключ-значение в dict1copi() dict1.copi() Возвращает поверхностную копию 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. Удачного кодирования!

Поделиться в соцсетях