Как создаются компьютерные словари?
Обновлено: 21.11.2024
Python поставляется с множеством встроенных структур данных, способных хранить различные типы данных. Словарь Python — это одна из таких структур данных, которая может хранить данные в виде пар ключ-значение. Доступ к значениям в словаре Python можно получить с помощью ключей. В этой статье мы подробно обсудим словарь Python.
Создание словаря
Чтобы создать словарь Python, нам нужно передать последовательность элементов внутри фигурных скобок <> и разделить их запятой (,). У каждого элемента есть ключ и значение, выраженное парой "ключ:значение".
Значения могут принадлежать любому типу данных и могут повторяться, но ключи должны оставаться уникальными.
В следующих примерах показано, как создавать словари Python:
Создание пустого словаря:
Создание словаря с целочисленными ключами:
Создание словаря со смешанными ключами:
Мы также можем создать словарь, явно вызвав метод Python dict():
Словарь также можно создать из последовательности, как показано ниже:
Словари также могут быть вложенными, что означает, что мы можем создать словарь внутри другого словаря. Например:
Чтобы распечатать содержимое словаря, мы можем использовать функцию Python print() и передать имя словаря в качестве аргумента функции. Например:
Вывод:
Доступ к элементам
Чтобы получить доступ к элементам словаря, передайте ключ в квадратных скобках [] . Например:
Вывод:
Мы создали словарь с именем dict_sample. Затем была создана переменная с именем x, и ее значение было установлено равным значению ключа "model" в словаре.
Вот еще один пример:
Вывод:
Объект словаря также предоставляет функцию get(), которую также можно использовать для доступа к элементам словаря. Мы добавляем к функции имя словаря с помощью оператора точки, а затем передаем имя ключа в качестве аргумента функции. Например:
Вывод:
Теперь мы знаем, как получить доступ к элементам словаря, используя несколько различных методов. В следующем разделе мы обсудим, как добавлять новые элементы в уже существующий словарь.
Добавление элементов
Существует множество способов добавления новых элементов в словарь. Мы можем использовать новый индексный ключ и присвоить ему значение. Например:
Вывод:
Новый элемент имеет "Емкость" в качестве ключа и "1800CC" в качестве соответствующего значения. Он был добавлен в качестве первого элемента словаря.
Вот еще один пример. Сначала давайте сначала создадим пустой словарь:
Вывод:
Словарь ничего не возвращает, так как в нем еще ничего не сохранено. Давайте добавим к нему несколько элементов, по одному:
Вывод:
Чтобы добавить элементы, мы указали ключи, а также соответствующие значения. Например:
В приведенном выше примере 0 — это ключ, а «Яблоки» — это значение.
Мы даже можем добавить набор значений к одному ключу. Например:
Вывод:
В приведенном выше примере имя ключа — «Values», а все, что стоит после знака =, — это фактические значения для этого ключа, сохраненные в виде набора.
Помимо добавления новых элементов в словарь, элементы словаря также можно обновлять/изменять, что мы рассмотрим в следующем разделе.
Обновление элементов
После добавления значения в словарь мы можем изменить существующий элемент словаря. Вы используете ключ элемента, чтобы изменить соответствующее значение. Например:
Вывод:
В этом примере вы можете видеть, что мы изменили значение ключа "год" со старого значения 2012 на новое значение 2014.
Удаление элементов
Удалить элемент из словаря можно несколькими способами, которые мы рассмотрим по очереди в этом разделе:
Ключевое слово del можно использовать для удаления элемента с указанным ключом. Например:
Вывод:
Мы назвали ключевое слово del, за которым последовало название словаря. Внутри квадратных скобок, следующих за названием словаря, мы передали ключ элемента, который нужно удалить из словаря, в данном примере это «год». Затем запись для года в словаре была удалена.
Еще один способ удалить пару "ключ-значение" — использовать функцию pop() и передать ключ удаляемой записи в качестве аргумента функции. Например:
Вывод:
Мы вызвали функцию pop(), добавив к ней имя словаря. Опять же, в этом примере запись «год» в словаре будет удалена.
Функция popitem() удаляет последний элемент, вставленный в словарь, без указания ключа. Взгляните на следующий пример:
Вывод:
Бесплатная электронная книга: Git Essentials
Ознакомьтесь с нашим практическим руководством по изучению Git, включающим передовые практики, общепринятые стандарты и памятку.Перестаньте гуглить команды Git и на самом деле изучите их!
Последняя запись в словаре была "год". Он был удален после вызова функции popitem().
Но что, если вы хотите удалить весь словарь? Было бы сложно и громоздко использовать один из этих методов для каждого отдельного ключа. Вместо этого вы можете использовать ключевое слово del для удаления всего словаря. Например:
Вывод:
Код возвращает ошибку. Причина в том, что мы пытаемся получить доступ к словарю, которого не существует, поскольку он был удален.
Однако ваш вариант использования может потребовать, чтобы вы просто удалили все элементы словаря и остались с пустым словарем. Этого можно добиться, вызвав функцию clear() для словаря:
Вывод:
Код возвращает пустой словарь, так как все элементы словаря были удалены.
Другие распространенные методы
Метод len()
С помощью этого метода вы можете подсчитать количество элементов в словаре. Например:
Вывод:
В словаре три записи, поэтому метод вернул 3.
Метод копирования()
Этот метод возвращает копию существующего словаря. Например:
Вывод:
Мы создали копию словаря с именем dict_sample и присвоили ее переменной x . Если в консоли вывести x, вы увидите, что он содержит те же элементы, что и словарь dict_sample.
Обратите внимание, что это полезно, поскольку изменения, внесенные в скопированный словарь, не повлияют на исходный.
Метод items()
При вызове этот метод возвращает итерируемый объект. Итерируемый объект имеет пары ключ-значение для словаря в виде кортежей в списке. Этот метод в основном используется, когда вы хотите выполнить итерацию по словарю.
Метод просто вызывается для имени объекта словаря, как показано ниже:
Вывод:
Объект, возвращаемый элементами(), также можно использовать для отображения изменений, внесенных в словарь. Это показано ниже:
Вывод:
Выходные данные показывают, что при изменении значения в словаре объект элементов также обновляется, чтобы отразить это изменение.
Метод fromkeys()
Этот метод возвращает словарь с указанными ключами и значениями. Синтаксис приведен ниже:
Значение параметра required keys является итерируемым и указывает ключи для нового словаря. Параметр value for value является необязательным и указывает значение по умолчанию для всех ключей. Значение по умолчанию для этого параметра — None .
Предположим, нам нужно создать словарь из трех ключей с одинаковым значением. Мы можем сделать это следующим образом:
Вывод:
В скрипте выше мы указали ключи и одно значение. Метод fromkeys() смог выбрать ключи и объединить их с этим значением для создания заполненного словаря.
Значение параметра keys является обязательным. В следующем примере показано, что происходит, когда значение параметра values не указано:
Вывод:
Использовалось значение по умолчанию None .
Метод setdefault()
Этот метод применим, когда нам нужно получить значение элемента с указанным ключом. Если ключ не найден, он будет вставлен в словарь вместе с указанным значением.
Метод использует следующий синтаксис:
В этой функции требуется параметр имени ключа. Он представляет собой ключевое имя элемента, из которого вам нужно вернуть значение. Параметр значения является необязательным. Если в словаре уже есть ключ, этот параметр не будет иметь никакого эффекта. Если ключ не существует, то значение, указанное в этой функции, станет значением ключа. Значение по умолчанию — None .
Вывод
В словаре нет ключа для цвета. Метод setdefault() вставил этот ключ, и указанное значение, то есть «Серый», было использовано в качестве его значения.
В следующем примере показано, как ведет себя метод, если значение для ключа действительно существует:
Вывод:
Значение "Allion" не влияет на словарь, поскольку у нас уже есть значение для ключа.
Метод keys()
Этот метод также возвращает итерируемый объект. Возвращаемый объект представляет собой список всех ключей в словаре. Как и в случае с методом items(), возвращаемый объект можно использовать для отражения изменений, внесенных в словарь.
Чтобы использовать этот метод, мы вызываем его только по имени словаря, как показано ниже:
Вывод:
Часто этот метод используется для перебора каждого ключа в вашем словаре, например:
Вывод:
Заключение
На этом руководство по словарям Python заканчивается. Эти словари хранят данные в парах «ключ: значение». «Ключ» действует как идентификатор элемента, а «значение» — это значение элемента.Словарь Python поставляется с множеством функций, которые можно применять для поиска или обработки данных. В этой статье мы увидели, как можно создать, изменить и удалить словарь Python, а также некоторые из наиболее часто используемых методов словаря.
Словарь — это встроенный тип отображения Python. Словари сопоставляют ключи со значениями, и эти пары ключ-значение предоставляют удобный способ хранения данных в Python.
Обычно используемые для хранения связанных данных, таких как информация, содержащаяся в идентификаторе или профиле пользователя, словари строятся с фигурными скобками с обеих сторон < >.
Информация. Чтобы следовать примеру кода из этого руководства, откройте интерактивную оболочку Python в локальной системе, выполнив команду python3. Затем вы можете копировать, вставлять или редактировать примеры, добавляя их после приглашения >>>.
Словарь выглядит следующим образом:
В дополнение к фигурным скобкам в словаре также есть двоеточие ( : ).
Каждый из ключей в приведенном выше примере является строковым значением.
Каждое из этих значений является строкой, логическим значением или целым числом.
Давайте распечатаем словарь Сэмми :
Судя по выходным данным, порядок пар "ключ-значение" мог измениться. В Python версии 3.5 и более ранних тип данных словаря неупорядочен. Однако в Python версии 3.6 и выше тип данных словаря остается упорядоченным. Независимо от того, упорядочен ли словарь или нет, пары ключ-значение останутся нетронутыми, что позволит нам получить доступ к данным на основе их реляционного значения.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке локальной среды программирования или среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.)< /p>
Доступ к элементам словаря
Мы можем вызывать значения словаря, ссылаясь на соответствующие ключи.
Доступ к элементам данных с помощью ключей
Поскольку словари предлагают пары ключ-значение для хранения данных, они могут быть важными элементами вашей программы Python.
Если мы хотим изолировать имя пользователя Сэмми, мы можем сделать это, вызвав sammy['username'] . Давайте распечатаем это:
Словари ведут себя как базы данных: вместо вызова целого числа для получения определенного значения индекса, как в случае со списком, вы присваиваете значение ключу и можете вызывать этот ключ для получения связанного с ним значения.
Вызывая ключ username, мы получаем значение этого ключа, то есть sammy-shark.
Остальные значения в словаре sammy можно вызывать аналогичным образом, используя тот же формат:
Используя пары ключ-значение словарей, мы можем обращаться к ключам для извлечения значений.
Использование методов для доступа к элементам
Помимо использования ключей для доступа к значениям, мы также можем работать с некоторыми встроенными методами:
- dict.keys() изолирует ключи
- dict.values() изолирует значения
- dict.items() возвращает элементы в формате списка из пар кортежей (ключ, значение)
Чтобы вернуть ключи, мы будем использовать метод dict.keys(). В нашем примере это будет использовать имя переменной и быть sammy.keys() . Давайте передадим это методу print() и посмотрим на результат:
Мы получаем вывод, который помещает ключи в итерируемый объект представления класса dict_keys. Затем ключи печатаются в формате списка.
Этот метод можно использовать для запросов по словарям. Например, мы можем взглянуть на общие ключи, общие для двух структур данных словаря:
Словарь sammy и словарь jesse являются словарями профиля пользователя.
Однако их профили имеют разные ключи, потому что у Сэмми есть социальный профиль со связанными подписчиками, а у Джесси — игровой профиль со связанными баллами. У них есть два общих ключа: имя пользователя и онлайн-статус, которые мы можем найти, запустив эту небольшую программу:
Конечно, мы могли бы улучшить программу, чтобы сделать вывод более удобочитаемым для пользователя, но это показывает, что dict.keys() можно использовать для проверки различных словарей, чтобы увидеть, что у них общего, а что нет. Это особенно полезно для больших словарей.
Аналогичным образом мы можем использовать метод dict.values() для запроса значений в словаре sammy, который будет построен как sammy.values() . Давайте распечатаем их:
Оба метода keys() и values() возвращают несортированные списки ключей и значений, присутствующих в словаре sammy, с объектами представления dict_keys и dict_values соответственно.
Если нас интересуют все элементы словаря, мы можем получить к ним доступ с помощью метода items():
Возвращенный формат представляет собой список, состоящий из пар кортежей (ключ, значение) с объектом представления dict_items.
Мы можем перебирать возвращаемый формат списка с помощью цикла for.Например, мы можем распечатать каждый из ключей и значений заданного словаря, а затем сделать его более понятным для человека, добавив строку:
Цикл for, описанный выше, перебирает элементы в словаре sammy и выводит ключи и значения построчно с информацией, которая облегчает понимание людьми.
Мы можем использовать встроенные методы для доступа к элементам, значениям и ключам из структур данных словаря.
Изменение словарей
Словари представляют собой изменяемую структуру данных, поэтому вы можете изменять их. В этом разделе мы рассмотрим добавление и удаление элементов словаря.
Добавление и изменение элементов словаря
Не используя метод или функцию, вы можете добавлять пары ключ-значение в словари, используя следующий синтаксис:
Мы посмотрим, как это работает на практике, добавив пару "ключ-значение" в словарь имен пользователей :
Теперь мы видим, что словарь был обновлен с помощью пары "ключ-значение" "Drew": "squidly". Поскольку словари могут быть неупорядоченными, эта пара может встречаться в любом месте вывода словаря. Если мы позже воспользуемся словарем имен пользователей в нашем программном файле, он будет включать дополнительную пару ключ-значение.
Кроме того, этот синтаксис можно использовать для изменения значения, присвоенного ключу. В этом случае мы будем ссылаться на существующий ключ и передавать ему другое значение.
Давайте рассмотрим словарь draw, который является одним из пользователей данной сети. Мы скажем, что сегодня у этого пользователя увеличилось количество подписчиков, поэтому нам нужно обновить целочисленное значение, переданное в ключ «followers». Мы воспользуемся функцией print(), чтобы проверить, был ли изменен словарь.
В выходных данных мы видим, что количество подписчиков подскочило с целочисленного значения 305 до 342 .
Мы можем использовать этот метод для добавления пар ключ-значение в словари с пользовательским вводом. Давайте напишем быструю программу usernames.py, которая запускается из командной строки и позволяет пользователю вводить дополнительные имена и связанные с ними имена пользователей:
Запустим программу в командной строке:
Когда мы запустим программу, мы получим что-то вроде следующего:
Когда мы закончим тестирование программы, мы можем нажать CTRL + C, чтобы выйти из программы. Вы можете настроить триггер для выхода из программы (например, ввести букву q ) с условным оператором, чтобы улучшить код.
Это показывает, как вы можете изменять словари в интерактивном режиме. В этой конкретной программе, как только вы выйдете из программы с помощью CTRL + C, вы потеряете все свои данные, если не реализуете способ обработки чтения и записи файлов.
Мы также можем добавлять и изменять словари с помощью метода dict.update(). Это отличается от метода append(), доступного в списках.
Добавим в приведенный ниже словарь jesse ключ "followers" и присвоим ему целочисленное значение с помощью jesse.update() . После этого давайте напечатаем () обновленный словарь.
Из вывода видно, что мы успешно добавили пару "followers": 481 "ключ-значение" в словарь jesse .
Мы также можем использовать метод dict.update(), чтобы изменить существующую пару "ключ-значение", заменив заданное значение на определенный ключ.
Давайте изменим онлайн-статус Sammy с True на False в словаре sammy:
Строка sammy.update() ссылается на существующий ключ «в сети» и изменяет его логическое значение с True на False . Когда мы вызываем print() словарь, мы видим, что обновление происходит в выводе.
Чтобы добавить элементы в словари или изменить значения, мы можем использовать либо синтаксис dictКак создаются компьютерные словари? = value, либо метод dict.update() .
Удаление элементов словаря
Точно так же, как вы можете добавлять пары "ключ-значение" и изменять значения в типе данных словаря, вы также можете удалять элементы в словаре.
Чтобы удалить пару ключ-значение из словаря, мы будем использовать следующий синтаксис:
Возьмем словарь jesse, представляющий одного из пользователей. Мы скажем, что Джесси больше не использует онлайн-платформу для игр, поэтому удалим пункт, связанный с ключом «очки». Затем мы распечатаем словарь, чтобы подтвердить, что элемент был удален:
Строка del jesse['points'] удаляет пару ключ-значение 'points': 723 из словаря jesse.
Если мы хотим очистить словарь от всех его значений, мы можем сделать это с помощью метода dict.clear(). Это сохранит данный словарь на случай, если нам понадобится использовать его позже в программе, но он больше не будет содержать никаких элементов.
Давайте удалим все элементы из словаря jesse:
Вывод показывает, что теперь у нас есть пустой словарь без пар ключ-значение.
Если нам больше не нужен определенный словарь, мы можем использовать del, чтобы полностью избавиться от него:
Когда мы запускаем вызов print() после удаления словаря jesse, мы получаем следующую ошибку:
Поскольку словари относятся к изменяемым типам данных, их можно добавлять, изменять, а также удалять и очищать элементы.
Заключение
В этом руководстве мы рассмотрели структуру данных словаря в Python. Словари состоят из пар ключ-значение и позволяют хранить данные, не полагаясь на индексацию. Это позволяет нам извлекать значения на основе их значения и отношения к другим типам данных.
Здесь вы можете узнать больше о других типах данных в нашем учебном пособии «Понимание типов данных».
Вы можете увидеть тип данных словаря, используемый в проектах программирования, таких как парсинг веб-страниц с помощью Scrapy.
Хотите узнать больше? Присоединяйтесь к сообществу DigitalOcean!
Присоединяйтесь к нашему сообществу DigitalOcean, насчитывающему более миллиона разработчиков, бесплатно! Получайте помощь и делитесь знаниями в нашем разделе "Вопросы и ответы", находите руководства и инструменты, которые помогут вам расти как разработчику и масштабировать свой проект или бизнес, а также подписывайтесь на интересующие вас темы.
Серия руководств: Как программировать на Python
Введение
Python – это гибкий и универсальный язык программирования, который можно использовать во многих случаях, с сильными сторонами в написании сценариев, автоматизации, анализе данных, машинном обучении и серверной разработке. Это отличный инструмент как для новичков, так и для опытных разработчиков.
Предпосылки
У вас должен быть установлен Python 3 и настроена среда программирования на вашем компьютере или сервере. Если у вас не настроена среда программирования, вы можете обратиться к руководствам по установке и настройке локальной среды программирования или среды программирования на вашем сервере, подходящей для вашей операционной системы (Ubuntu, CentOS, Debian и т. д.)< /p>
Все составные типы данных, которые мы до сих пор подробно изучали — строки, списки и кортежи — представляют собой последовательные коллекции. Это означает, что элементы в коллекции упорядочены слева направо и используют целые числа в качестве индексов для доступа к содержащимся в них значениям.
Словари — это другой тип коллекции. Это встроенный тип отображения Python. Карта — это неупорядоченная ассоциативная коллекция. Ассоциация или сопоставление происходит от ключа, который может быть любого неизменяемого типа, к значению, которое может быть любым объектом данных Python.
В качестве примера мы создадим словарь для перевода английских слов на испанский язык. Для этого словаря ключи являются строками, и значения также будут строками.
Один из способов создать словарь — начать с пустого словаря и добавить пары "ключ-значение". Пустой словарь обозначается <>
Действие: CodeLens 12.1.1 (chp12_dict1)
Первое задание создает пустой словарь с именем eng2sp . Другие присваивания добавляют в словарь новые пары ключ-значение. В левой части указан словарь и связанный с ним ключ. В правой части указано значение, связанное с этим ключом. Мы можем вывести текущее значение словаря обычным способом. Пары ключ-значение словаря разделяются запятыми. Каждая пара содержит ключ и значение, разделенные двоеточием.
Порядок пар может быть не таким, как вы ожидали. Python использует сложные алгоритмы, разработанные для очень быстрого доступа, чтобы определить, где в словаре хранятся пары ключ-значение. Для наших целей такой порядок можно считать непредсказуемым.
Еще один способ создать словарь — предоставить список пар "ключ-значение", используя тот же синтаксис, что и в предыдущем выводе.
Действие: CodeLens 12.1.2 (chp12_dict2)
Неважно, в каком порядке мы пишем пары. Доступ к значениям в словаре осуществляется с помощью ключей, а не индексов, поэтому нет необходимости заботиться о порядке.
Вот как мы используем ключ для поиска соответствующего значения.
Действие: CodeLens 12.1.3 (chp12_dict3)
Ключ "два" дает значение "dos".
Это рабочее пространство создано для вашего удобства. Вы можете использовать это окно ActiveCode, чтобы попробовать все, что вам нравится.
Проверьте свое понимание
dict-1-5: словарь представляет собой неупорядоченный набор пар ключ-значение.
dict-1-6: Что печатают следующие операторы?
© Авторские права Брэд Миллер, Дэвид Ранум, 2014. Создано с помощью Runestone Interactive. Последнее обновление: 26 марта 2022 г.
Создано с использованием Runestone 6.0.11.
Словарь — это неупорядоченный и изменяемый контейнер Python, в котором хранятся сопоставления уникальных ключей со значениями. Словари пишутся с помощью фигурных скобок (<>), включая пары ключ-значение, разделенные запятыми (,). Двоеточие (:) отделяет каждый ключ от его значения.
Ниже показаны три словаря, содержащие данные о населении 5 крупнейших городов Германии, список продуктов и оценки учащихся.
Словари также можно создавать с помощью встроенной функции dict(**kwarg). Эта функция принимает в качестве входных данных произвольное количество аргументов ключевых слов (аргументы, которым предшествует идентификатор kwarg=value).
Мы также можем создать словарь, используя другой словарь в сочетании с аргументами ключевого слова (dict(mapping, **kwarg)) следующим образом:
В качестве альтернативы мы можем создать словарь, используя итерируемый объект (например, список кортежей). Каждый кортеж должен содержать два объекта. Первый объект становится ключом, а второй — значением словаря.
Наконец, мы можем создать словарь, используя два списка. Во-первых, нам нужно создать итератор кортежей, используя функцию zip(*iterables). Затем мы используем функцию dict([iterable, **kwarg]) для создания словаря, как делали это ранее.
Для доступа к значениям словаря мы не можем использовать числовой индекс (как мы делаем со списками или кортежами), поскольку словари являются неупорядоченными контейнерами. Вместо этого мы заключаем ключ в квадратные скобки ([]). Если мы попытаемся получить доступ к значению с помощью неопределенного ключа, возникнет ошибка KeyError.
Чтобы избежать исключения с неопределенными ключами, мы можем использовать метод dict.get(key[, default]). Этот метод возвращает значение для ключа, если ключ находится в словаре, иначе возвращает значение по умолчанию. Если значение по умолчанию не указано, возвращается None (но никогда не вызывается исключение).
Чтобы вставить элемент в словарь, мы можем использовать квадратные скобки следующим образом:
Чтобы вставить несколько элементов одновременно, мы можем использовать метод dict.update([other]). Этот метод обновляет словарь парами ключ/значение из других, перезаписывая существующие ключи.
Как показано выше, метод .update() принимает в качестве аргумента не только другой словарь, но и список кортежей или аргументов ключевого слова. Этот метод изменяет словарь на месте, возвращая None.
Мы можем изменить значение элемента, обратившись к ключу с помощью квадратных скобок ([]). Чтобы изменить несколько значений одновременно, мы можем использовать метод .update(), так как эта функция перезаписывает существующие ключи.
Впоследствии мы увеличиваем цену дивана на 100 единиц и изменяем оценки двух учеников.
Чтобы удалить элемент из словаря, мы можем использовать ключевое слово del dictКак создаются компьютерные словари? или метод dict.pop(key[, default]).
Ключевое слово del dictКак создаются компьютерные словари? удаляет данный элемент из словаря, вызывая ошибку KeyError, если ключ не существует.
Если ключ существует в словаре, метод dict.pop(key[, default]) удаляет элемент с заданным ключом из словаря и возвращает его значение. Наоборот, если ключ не существует в словаре, метод возвращает значение по умолчанию. Если значение по умолчанию не указано и ключ не существует, метод .pop() вызовет исключение (KeyError).
Чтобы проверить, существует ли ключ в словаре, мы должны использовать оператор принадлежности. Операторы принадлежности используются для проверки того, находится ли значение в последовательности (например, в строках, списках, кортежах, наборах или словарях). Существует два оператора принадлежности, как описано ниже.
- in → Возвращает значение true, если объект с левой стороны входит в объект с правой стороны.
- not in → Возвращает значение true, если объект слева не входит в объект справа.
Как показано выше, операторы принадлежности (in и not in) можно использовать для проверки существования ключа в словаре, но их также можно использовать с другими последовательностями следующим образом.
Чтобы скопировать словарь, мы можем просто использовать метод dict.copy(). Этот метод возвращает неглубокую копию словаря. Мы должны быть осторожны с поверхностными копиями, так как если ваш словарь содержит другие объекты-контейнеры, такие как списки, кортежи или наборы, на них будут ссылаться снова, а не дублировать.
Чтобы избежать этой проблемы, мы можем создать глубокую копию с помощью функции copy.deepcopy(x) (определенной в модуле копирования) следующим образом:
Разница между поверхностными и глубокими копиями актуальна только в том случае, если словарь содержит другие объекты, такие как списки, поскольку на эти объекты будут ссылаться, а не дублироваться (поверхностное копирование). Чтобы создать полностью независимый клон исходного словаря, мы должны сделать его глубокую копию.
Если вы хотите узнать больше о том, как копировать словарь, вы можете прочитать следующую статью, в которой подробно объясняются различия между поверхностными и глубокими копиями.
Python: как скопировать словарь | Поверхностное копирование против глубокого копирования
В этой статье мы обсудим, как создать поверхностную и глубокую копию словаря в Python. Словарь Python…
Важно помнить, что оператор = не создает копию словаря. Это просто другое имя для ссылки на тот же словарь, что означает, что любые изменения в новом словаре отражаются в исходном.
Чтобы определить, сколько пар ключ-значение содержит словарь, мы можем использовать функцию len(). Эта функция возвращает количество элементов объекта. Входными данными функции может быть словарь, а также другой тип последовательности, такой как строка, список, кортеж или набор.
Перебор ключей
Для перебора ключей мы можем использовать словарь непосредственно в цикле for следующим образом:
В качестве альтернативы мы можем использовать метод dict.keys(). Этот метод возвращает объект представления, содержащий ключи словаря.
Итерация значений
Если вам просто нужно работать со значениями словаря, вы можете использовать метод dict.values() в цикле for. Этот метод возвращает объект представления, содержащий значения словаря.
С помощью метода dict.values() мы можем вычислить количество людей, проживающих в 5 крупнейших городах Германии, следующим образом:
Как мы видим, в 5 крупнейших городах Германии проживает почти 9 миллионов человек.
Повторение элементов
При работе со словарями вам, вероятно, придется использовать ключи и значения. Чтобы пройти через оба, вы можете использовать метод dict.items(). Этот метод возвращает объект представления, содержащий пары ключ-значение в виде списка кортежей.
Мы можем определить учащегося с наименьшим баллом за тест, используя метод dict.items() в сочетании с циклом for следующим образом:
Как показано выше, у Нормандо самый низкий балл за тест (2,5).
Петонные циклы for очень удобны при решении повторяющихся задач программирования; однако есть другая альтернатива для достижения тех же результатов более эффективным способом: понимание словаря.
Получить словарь позволяет создать словарь, используя элегантный и простой синтаксис: . Кроме того, они быстрее традиционных циклов for.
Мы можем отфильтровать товары по цене ниже 100 евро, используя как традиционный цикл for, так и словарное понимание.
Как мы видим, словарное включение обеспечивает те же результаты, что и традиционные циклы for, но более элегантным способом.
Вложенные словари — это словари, содержащие другие словари. Мы можем создать вложенный словарь так же, как мы создаем обычный словарь, используя фигурные скобки (<>).
Следующий вложенный словарь содержит информацию о 5 известных произведениях искусства. Как мы видим, значениями словаря являются и другие словари.
Мы также можем создать предшествующий вложенный словарь с помощью конструктора dict(), передав пары ключ: значение в качестве аргументов ключевого слова.
Чтобы получить доступ к элементам вложенного словаря, мы указываем ключи с помощью нескольких квадратных скобок ([]).
Если вы хотите узнать больше о вложенных словарях, вы можете прочитать следующую статью, в которой подробно объясняется, как работать с вложенными словарями (например, обновлять элементы, изменять элементы и выполнять циклы).
Вложенный словарь Python — учимся на примерах
Словарь может содержать другой словарь, который, в свою очередь, может содержать сами словари, и так далее до произвольного…
ЗаказанныйДиск
OrderedDict состоит из словаря, который запоминает порядок добавления своего содержимого. В Python 3.6+ словари также упорядочены по вставке, что означает, что они запоминают порядок вставленных элементов. Однако, чтобы гарантировать порядок элементов в других версиях Python, мы должны использовать контейнеры OrderedDict.
Как показано выше, OrderedDict принимает методы и функции словаря. Кроме того, элементы можно вставлять, изменять или удалять так же, как и в обычных словарях.
словарь по умолчанию
Defaultdicts — это подкласс словаря, который присваивает значение по умолчанию, когда ключ отсутствует (он еще не установлен). Они никогда не вызывают KeyError, если мы пытаемся получить доступ к элементу, которого нет в словаре, вместо этого создается новая запись.
Defaultdicts принимает функцию в качестве аргумента и инициализирует отсутствующий ключ значением, возвращаемым функцией. В приведенном ниже примере ключи инициализируются разными значениями в зависимости от функции, используемой в качестве первого аргумента.
Как мы видим, мы можем передать словарь или ключевые слова в качестве второго аргумента (необязательного) для инициализации контейнера defaultdict.
Счетчик
Счетчик — это подкласс словаря для подсчета объектов hastable. Функция возвращает объект счетчика, в котором элементы хранятся как ключи, а их счетчики — как значения. С помощью этой функции мы можем легко подсчитать элементы списка, как показано ниже.
Как показано выше, мы можем легко получить наиболее часто встречающиеся элементы с помощью метода .most_common([n]). Этот метод возвращает список n наиболее распространенных элементов и их количество.
Кадр данных Pandas представляет собой двумерные табличные данные, в которых каждая строка представляет собой наблюдение, а каждый столбец — переменную. Pandas DataFrame можно создать с помощью конструктора pandas.DataFrame. Эта функция принимает в качестве входных данных различные контейнеры Python (например, списки, словари или массивы numpy). Однако в этой статье мы объясним только те способы создания DataFrame, которые предполагают использование словарей.
Создать DataFrame из словаря
Мы можем создать DataFrame из словаря, где ключи представляют имена столбцов, а значения представляют данные столбцов следующим образом:
Как мы видим, индекс по умолчанию — это просто номер строки (целочисленный индекс, начинающийся с 0). Мы можем изменить эти индексы, передав список индексов конструктору DataFrame.
Создать DataFrame из списка словарей
Список словарей также можно использовать для создания DataFrame, где ключи представляют имена столбцов. Как и раньше, мы можем изменить индексы, передав список индексов в функцию DataFrame.
В Pandas есть несколько функций, которые используют словари в качестве входных значений, например, pandas.DataFrame.rename и pandas.DataFrame.replace.
pandas.DataFrame.rename
Эта функция возвращает DataFrame с переименованными метками осей. Мы можем использовать словарь в качестве входных данных, где ключи относятся к старым именам, а значения к новым. Ярлыки, не содержащиеся в словаре, остаются без изменений.
Как показано выше, мы можем изменить метки индекса, предоставив словарь для параметра индекса. Кроме того, мы можем изменить имена столбцов, предоставив словарь параметру столбца.
панды.DataFrame.replace
Эта функция динамически заменяет значения DataFrame другими значениями. Мы можем использовать словарь с функцией замены для изменения DataFrame, где ключи представляют существующие записи, а значения замещают записи.
Статья закончена! 🍀 Как видите, словари — очень полезный инструмент в Python. Я надеюсь, что эта статья послужит вам руководством для того, чтобы в полной мере использовать их преимущества при написании кода на Python. 💪
Читайте также: