Как ввести словарь с клавиатуры
В этой статье разберем все о логике работы словарей в Python. Мы научимся создавать их, получать доступ к элементам словаря, добавлять, удалять элементы. При работе со словарями мы так же разберем и встроенные методы. В Python работа со словарями, особо не отличается от работы со списками, кортежами, и.т.д.
Как создать словарь ?
Создание словаря, ничем особо сложным не отличается, мы заключаем словарь в фигурные < >скобки, а элементы идут через запятую. Каждый элемент словаря содержит (ключ:значение).
Выше рассмотрены варианты создания словаря в Python. Как вы могли заметить словари можно создать заключая пары в фигурные скобки, так и используя функцию dict() .
Внутри словаря, можно хранить в качестве значений любой тип данных. Но, ключи значений обязательно должны иметь неизменяемый тип данных, и так они должны быть уникальными.
Доступ к элементам Словаря
Для доступа к элементам словаря, можно воспользоваться квадратными скобками [] , либо использовать метод get() . В случае если мы воспользуемся квадратными скобками, то если ключ не найден, то мы получим ошибку KeyError . Если мы воспользуемся get() , и при условии что ключ не будет найден, функция вернет нам None .
Изменение и добавление элементов в словарь
С помощью оператора присваивания, мы можем добавлять новые элементы, а так же менять значение существующих. Если ключ существует, то обновляется его значение, если он отсутствует, то в словарь добавляется пара (ключ:значение).
Удаление элементов из словаря
С помощью метода pop() , мы можем удалить конкретный ключ, и он нам вернет значение этого ключа. Метод popitem() удалит случайную пару ключ:значение, и так же вернет случайную пару ключ:значение. Весь словарь можно очистить с помощью метода clear() . Для удаление отдельных элементов, можно воспользоваться ключевым словом del .
Методы словаря
Метод | Описание |
clear() | Удаляет все элементы из словаря. |
copy() | Возвращает копию словаря. |
fromkeys(seq[, v]) | Возвращает новый словарь с ключами из seq и значение, равное v (по умолчанию используется значение None). |
get(key[,d]) | Возвращает значение key. Если key не существует, возвращается d (по умолчанию используется значение None). |
items() | Возвращает новый объект элементов словаря в формате (ключ, значение). |
keys() | Возвращает новый объект ключей словаря. |
pop(key[,d]) | Удаляет элемент с помощью key и возвращает его значение или d если key не найден. Если d не предусмотрено и key не найден, его поднимает KeyError. |
popitem() | Удаляет и возвращает произвольный элемент (ключ, значение). Повышения KeyError если словарь пуст. |
setdefault(key[,d]) | Возвращает соответствующее значение, если key есть в словаре. Если нет, то вставляет key со значением d и возвращается d (по умолчанию используется значение None). |
update([other]) | Обновляет словарь парами ключ/значение из other, перезапись существующих ключей. |
values() | Возвращает новый объект значений |
Примеры работы этих методов
Генерирование словаря
Если помните, мы с вами уже рассматривали генерацию списков, кортежей и.т.д. В принципе логика генерации словарей, не сильно отличается. Рассмотрим пример создание генерированного словаря, где элемент будет равен квадрату своего ключа.
Вышеописанный код эквивалентен
Так же при генерации словаря, мы можем воспользоваться оператором условий if. Рассмотрим пример создания словаря с нечетными элементами.
О бычно программа работает по такой схеме: получает входные данные → обрабатывает их → выдает результат. Ввод может поступать как непосредственно от пользователя через клавиатуру, так и через внешний источник (файл, база данных).
В стандартной библиотеке Python 3 есть встроенная функция input() (в Python 2 это raw_input() ), которая отвечает за прием пользовательского ввода. Разберемся, как она работает.
Чтение ввода с клавиатуры
Функция input([prompt]) отвечает за ввод данных из потока ввода:
- При вызове функции input() выполнение программы приостанавливается до тех пор, пока пользователь не введет текст на клавиатуре (приложение может ждать бесконечно долго).
- После нажатия на Enter , функция input() считывает данные и передает их приложению (символ завершения новой строки не учитывается).
- Полученные данные присваиваются переменной и используются дальше в программе.
input() всегда возвращает строку :
Также у input есть необязательный параметр prompt – это подсказка пользователю перед вводом:
name = input("Введите имя: ") print(f"Привет, !") > Введите имя: Вася > Привет, Вася!
📃 Более подробное описание функции из документации:
def input([prompt]): """ Read a string from standard input. The trailing newline is stripped. The prompt string, if given, is printed to standard output without a trailing newline before reading input. If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError. On *nix systems, readline is used if available. """ pass
Преобразование вводимые данные
Данные, введенные пользователем, попадают в программу в виде строки, поэтому и работать с ними можно так же, как и со строкой. Если требуется организовать ввод цифр, то строку можно преобразовать в нужный формат с помощью функций явного преобразования типов.
☝️ Важно : если вы решили преобразовать строку в число, но при этом ввели строку (например: test), возникнет ошибка:
На практике такие ошибки нужно обрабатывать через try except . В примере ниже пользователь будет вводить данные до тех пор, пока они успешно не преобразуются в число.
def get_room_number(): while True: try: num = int(input("Введите номер комнаты: ")) return num except ValueError: print("Вы ввели не число. Повторите ввод") room_number = get_room_number() print(f"Комната успешно забронирована!") > Введите номер комнаты: test > Вы ввели не число. Повторите ввод > Введите номер комнаты: 13 > Комната 13 успешно забронирована!
Input() → int
Для преобразования в целое число используйте функцию int() . В качестве аргумента передаются данные которые нужно преобразовать, а на выходе получаем целое число:
То же самое можно сделать в одну строку: age = int(input("Введите ваш возраст: ")) .
Input() → float
Если нужно получить число с плавающей точкой (не целое), то его можно получить с помощью функции float() .
Input() → list (список)
Если в программу вводится информация, которая разделяется пробелами, например, "1 word meow", то ее легко преобразовать в список с помощью метода split() . Он разбивает введенные строки по пробелам и создает список:
💭 Обратите внимание, что каждый элемент списка является строкой. Для преобразования в число, можно использовать int() и цикл for. Например, так:
Ввод в несколько переменных
Если необходимо заполнить одним вводом с клавиатуры сразу несколько переменных, воспользуйтесь распаковкой:
В этом примере строка из input() разбивается по пробелу функцией split() . Далее применяется синтаксис распаковки – каждый элемент списка попадает в соответствующую переменную.
Все переменные после распаковки будут строкового типа. Преобразовать их (например в int) можно так:
☝️ Важно : не забывайте обрабатывать ошибки:
В этом руководстве вы узнали, как принимать данные от пользователя, введенные с клавиатуры, научились преобразовывать данные из input и обрабатывать исключения.
В Python есть много встроенных структур данных, используемых для хранения разных типов информации. Словарь ( dict ) — одна из таких структур, которая хранит данные в формате пар ключ-значение. Получить доступ к значениям словаря Python можно с помощью ключей. Этот материал посвящен подробному обсуждению словаря.
Создание словаря
Для создания словаря в Python необходимо передать последовательность элементов внутри фигурных скобок <> , разделив их запятыми ( , ). Каждый элемент имеет ключ и значение, выраженное парой «ключ: значение».
Значения могут быть представлять собой любые типы данных и повторяться, но ключи обязаны быть уникальными.
Следующие примеры показывают, как создавать словари Python:
Создание пустого словаря:
Cловарь, где ключи являются целыми числами:
Создание словаря с ключами разных типов:
Можно также создать словарь, явно вызвав метод dict() :
Словарь можно создать с помощью последовательности, как в примере внизу:
Словари могут быть вложенными. Это значит, что можно создавать словари внутри существующего словаря. Например:
Чтобы вывести содержимое словаря, можно использовать функцию print() и передать название словаря в качестве аргумента. Например:
Доступ к элементами
Чтобы получить доступ к элементам словаря, нужно передать ключ в квадратных скобках [] . Например:
Был создан словарь dict_sample . Затем была создана переменная x . Ее значение — это значение ключа ["model"] из словаря.
Вот другой пример:
Объект словаря также имеет функцию get() , которой можно пользоваться для доступа к элементам словаря. Ее нужно добавлять к словаря через точку и затем передавать название ключа как аргумент функции. Например:
Теперь вы знаете, как получать доступ к элементам словаря с помощью разных методов. В следующем разделе речь пойдет о добавлении новых элементов в уже существующий словарь.
Добавление элементов
Существует множество способов для добавления новых элементов в словарь. Можно использовать новый ключ и присвоить ему значение. Например:
У нового элемента ключ "Capacity" и значение — "180CC" . Он был добавлен в качестве первого элемента словаря.
Вот другой пример. Для начала нужно создать пустой словарь:
Словарь ничего не возвращает, потому что в нем ничего не хранится. Добавим в нему элементы, один за одним:
Для добавления элементов были отдельно указаны ключи и соответствующие значения. Например:
В этом примере 0 является ключом, а "Apples" — значение.
Можно даже добавить несколько значений для одного ключа. Например:
В этом примере название ключа — "Value" , а все что после знака = — его значения в формате множества ( Set ).
Помимо добавления новых элементов в словарь, их можно обновлять или изменять. Об этом в следующем разделе.
Обновление элементов
После добавления значения в словарь существующий элемент словаря можно изменить. Для изменения значения используется соответствующий ключ. Например:
В этом примере видно, что было обновлено значение ключа "year" с 2012 на 2014 .
Удаление элементов
Удалить элемент из словаря можно несколькими способами. В этом разделе они будут рассмотрены по одному:
Ключевое слово del можно использовать для удаления элемента с конкретным ключом. Например:
Вызывается ключевое слово del , а следом за ним — название словаря. В квадратных скобках следом за словарем идет ключ элемента, который требуется удалить. В этом примере это "year" . Запись "year" удаляется из словаря.
Другой способ удалить пару ключ-значение — функция pop() с ключом записи в виде аргумента. Например:
Функция pop() была вызвана добавлением ее к названию словаря. В этом случае будет удалена запись с ключом "year" .
Функция popitem() удаляет последний элемент в словаре. Для нее не нужно указывать конкретный ключ. Примеры:
Последней записью в словаре была "year" . Она пропала из словаря после вызова функции popitem() .
Что делать, если нужно удалить целый словарь? Это будет сложно и займет много времени, если пользоваться этими методами к каждому ключу. Вместо этого можно использовать ключевое слово del для целого словаря. Например:
Код вернет ошибку, потому что функция print() пытается получить доступ к словарю, который уже не существует.
В определенных случаях может потребоваться удалить все элементы словаря, оставив его пустым. Этого можно добиться, воспользовавшись функцией clear() :
Код вернет пустой словарь, поскольку все его элементы уже удалены.
Другие распространенные методы словарей
Метод len()
С помощью этого метода можно посчитать количество элементов в словаре. Например:
В этом словаре три записи, поэтому метод вернет 3.
Метод copy()
Этот метод возвращает копию существующего словаря. Например:
Была создана копия словаря dict_sample . Она присвоена переменной x . Если вывести x в консоль, то в ней будут те же элементы, что и в словаре dict_sample .
Это удобно, потому что изменения в скопированном словаре не затрагивают оригинальный словарь.
Метод items()
Этот метод возвращает итерируемый объект. Такой объект содержит пары ключ-значение для словаря по аналогии с кортежами в списке. Метод используется, когда нужно перебрать значения словаря.
Этот метод нужно вызывать вместе со словарем, как в примере ниже:
Объект, который возвращает items() , можно использовать, чтобы показать изменения в словаре. Вот как это работает.
Вывод демонстрирует, что когда вы меняете значение в словаре, объекты элементов также обновляются.
Метод fromkeys()
Этот метод возвращает словарь с указанными ключами и значениями. У него следующий синтаксис:
Значение требуемого параметра keys — итерируемые объекты. Оно отвечает за ключи нового словаря. Значение для параметра value указывать необязательно. Оно отвечает за значение по умолчанию для всех ключей. По умолчанию — None .
Предположим, что нужно создать словарь с тремя ключами и одинаковым значением. Это можно сделать следующим образом:
В коде вверху определены ключи и одно значение. Метод fromkeys() перебирает ключи и объединяет их со значением для создания заполненного словаря.
Значение для параметра keys является обязательным. В следующем примере показано, что происходит, если параметр values не определен:
Используется значение по умолчанию, None .
Метод setdefault()
Этот метод используется, когда нужно получить значение элемента с конкретным ключом. Если ключ не найден, он будет вставлен в словарь вместе с указанным значением.
У метода следующий синтаксис:
В этой функции параметр keyname является обязательным. Он обозначает название ключа, значение которого нужно вернуть. Параметр value необязательный. Если в словаре уже есть ключ, параметр не будет иметь никакого эффекта. Если ключ не существует, тогда значение функции станет значением ключа. Значение по умолчанию — None .
В словаре нет ключа color . Метод setdefault() вставляет этот ключ вместе со значением "Gray" .
Следующий пример показывает, как работает метод, если такой ключ уже есть:
Значение "Allion" не повлияло на словарь, потому что у ключа уже есть значение.
Метод keys()
Этот метод также возвращает итерируемый объект. Он является списком всех ключей в словаре. Как и метод items() , этот отображает изменения в самом словаре.
Для использования метода нужно всего лишь использовать его с именем словаря, как показано ниже:
Часто этот метод используется, чтобы перебрать все ключи в словаре:
Выводы
Это все, что нужно знать о словарях Python. Они хранят информацию в парах «ключ: значение». «Ключ» выступает идентификатором объекта, а «значение» — это определенные данные. В Python много функций, которые могут быть использовать для извлечения и обработки данных. В этой статье были рассмотрены способы создания, изменения и удаления словаря, а также самые распространенные методы для работы с этим типом данных.
Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Вот пример словаря на Python:
Данный словарь использует строки в качестве ключей, однако ключом может являться в принципе любой неизменяемый тип данных. Значением же конкретного ключа может быть что угодно. Вот ещё один пример словаря, где ключами являются числа, а значениями — строки:
Важное уточнение: если вы попробуете использовать изменяемый тип данных в качестве ключа, то получите ошибку:
Прим. перев. На самом деле проблема не с изменяемыми, а с нехэшируемыми типами данных, но обычно это одно и то же.
Получение данных из словаря
Для получения значения конкретного ключа используются квадратные скобки [] . Предположим, что в нашем словаре есть пара 'марафон': 26 .
Опять же, вы получите ошибку, если попытаетесь получить значение по несуществующему ключу. Для избежания подобных ошибок существуют методы, о которых мы сейчас поговорим.
Добавление и обновление ключей
Добавление новых пар в словарь происходит достаточно просто:
Обновление существующих значений происходит абсолютно также:
Удаление ключей
Для удаления ключа и соответствующего значения из словаря можно использовать del
Методы
Словари в Python имеют множество различных полезных методов, которые помогут вам в работе с ними. Вот лишь некоторые из них:
Update
Метод update() пригодится, если нужно обновить несколько пар сразу. Метод принимает другой словарь в качестве аргумента.
Если вас интересует, почему данные в словаре расположены не в том порядке, в котором они были внесены в него, то это потому что словари не упорядочены.
Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None .
Метод можно использовать для проверки наличия ключей в словаре:
Также можно указать значение по умолчанию, которое будет возвращено вместо None , если ключа в словаре не окажется:
Метод pop() удаляет ключ и возвращает соответствующее ему значение.
Метод keys() возвращает коллекцию ключей в словаре.
Values
Метод values() возвращает коллекцию значений в словаре.
Items
Метод items() возвращает пары «ключ — значение».
Итерация через словарь
Вы можете провести итерацию по каждому ключу в словаре.
Очевидно, вместо story_count можно использовать story_count.keys() .
В примере кода ниже ниже цикл for использует метод items() для получения пары «ключ — значение» на каждую итерацию.
Ввод данных с клавиатуры осуществляется с помощью функции input(). После выполнения данной функции программа ожидает ввода данных и после нажатия "Enter" записывает их в переменную или возвращает результат на экран.
Существуют 4 вида ввода:
Это означает, что в переменную a будет записано целое число (int - integer).
Чтобы программа начала работать, можно нажать F5 или Run Module (после этого Python предложит ее сохранить, так как он не может работать с несохраненными программами):
После этого появится примерно такое окно (окна могут различаться в зависимости от процессора, операционной системы и версии Python):
На строке, идущей после двух наборов стрелочек (в данном случае на шестой) будет мигающий курсор. Вам надо будет ввести любое целое число и нажать "Enter". После этого программа начнет работать и выведет введенное число.
"float" означает ввод действительного числа. При вводе нецелого числа Вы должны разделить целую и дробную часть точкой. Например, "34.75"
"str" означает ввод строки. Например, "qwerty" или "Hello, Python!" (str - string).
Это означает ввод любых двух и более элементов. Скобки после "split" используются для того, чтобы задать, чем будут разделяться переменные (по умолчанию пробел). Например:
С помощью этих функций можно преобразовать действительное число в дробное (при этом чсло округляется в меньшую сторону), число в строку и так далее:
Читайте также: