
Словари в Python
Словари в Python
Словари в Python - это изменяемые, неупорядоченные структуры данных, которые хранят пары "ключ": "значение", предназначенные для объединения взаимосвязанной информации. Например "Имя": "Алекс", "Возраст": 30.
Словарь имеет следующий синтаксис:
my_dict = {"key": "value"}
Создать словарь можно несколькими способами:
- my_dict = { key: value }
- my_dict = dict( key=value )
- my_dict = dict( { key: value } )
В фигурные скобки передаются пары ключ: значение. Каждый ключ связан со своим значением, мы можем обратиться к значению через ключ.
Ключи в словарях Python - уникальны и неизменны, значениями же наоборот могут быть любые объекты, т.е строки, числа, списки, множества, другие словари и т.д.
Ключ в словаре отделяется от значения двоеточием, а пары словаря разделяются запятыми. "Ключ": "значение", "Ключ2: "значение". В словаре можно хранить любое количество пар.
Получение значений словаря в Python
Чтобы получить значение словаря, нам нужно обратится к нему через ключ используя следующий синтаксис:
months = {1: 'January', 2: 'February'}
months[1] = 'January'
person = {'имя': 'Алекс', 'возраст': 27, 'рост': 180}
person['рост'] = 180
Указываем имя_словаря['Ключ в скобках']. Если мы укажем несуществующий ключ, то получим ошибку:
person['любимое блюдо']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'любимое блюдо'
Добавление новых пар в словарь Python
Словари в Python - изменяемые объекты, в любой момент мы можем добавить новые пары. Для этого нужно указать имя_словаря['новый ключ'] = новое значение.
Добавим в наш словарь person ещё несколько атрибутов, веc и любимое блюдо:
person['вес'] = 93
person['любимое блюдо'] = 'карбонара'
person = {'имя': 'Алекс', 'возраст': 27, 'рост': 180, 'любимое блюдо': 'карбонара', 'вес': 93}
Вы могли обратить внимание, что при печати словаря, пары отобразились не в том порядке, в котором мы их заносили. Это происходит потому, что словари - неупорядоченные объекты, важна лишь связь между ключами и значениями.
Изменение значений в словаре Python
Для изменение значений в словаре, укажите имя_словаря['ключ'] = новое значение.
person['вес'] = 102
person = {'имя': 'Алекс', 'возраст': 27, 'рост': 180, 'вес': 102, 'любимое блюдо': 'карбонара'}
У Алекса изменился вес, не удивительно, ведь карбонара - его любимое блюдо.
Удаление пар в словаре Python
Если хранящаяся в словаре пара перестаёт быть актуальной или нужной, её можно удалить при помощи команды del, после которой достаточно передать имя словаря и удаляемый ключ.
del имя_словаря['удаляемый ключ'].
del person['любимое блюдо']
Имейте ввиду, что удаление пары отменить нельзя. Данные будут потеряны.
Перебор пар ключ-значение в словаре Python
Для того, чтобы перебрать все данные в словаре Python, воспользуемся циклом for:
person = {'имя': 'Алекс', 'возраст': 27, 'рост': 180, 'вес': 93, 'любимое блюдо': 'карбонара', 'машина': 'Mercedes-Benz'}
for key, value in person.items():
print(str(key) + " - " + str(value))
имя-Алекс
возраст-27
рост-180
вес-93
любимое блюдо-карбонара
машина-Mercedes-Benz
Если мы хотим перебрать и ключи и значения, то в первой половине команды после for нам необходимо задать имена двух переменных, которые будут хранить ключ и значение соответственно, вы можете задать им любое имя, но часто будете встречать либо key, value либо просто k, v.
Во второй половине мы указываем словарь и вызываем у него метод .items( ), который возвращает список пар ключ-значение.
for key, value in person.items():
Перебор ключей в словаре Python
Когда вы вызываете цикл for и перебираете словарь без указания метода, перебор по ключам используется по умолчанию. Т.е запись:
for key in person:
эквивалентна записи
for key in person.keys():
person = {'имя': 'Алекс', 'возраст': 27, 'рост': 180, 'вес': 93, 'любимое блюдо': 'карбонара', 'машина': 'Mercedes-Benz'}
for key in person:
print(key)
имя
возраст
рост
вес
любимое блюдо
машина
Перебор по ключам удобно использовать например чтобы узнать был ли уже использован определённый ключ или нет:
if 'рост' in person.keys():
print('Данный ключ уже используется!')
else:
print('Вы можете использовать данный ключ для создания пары.')
Данный ключ уже используется!
if 'язык' in person.keys():
print('Данный ключ уже используется!')
else:
print('Вы можете использовать данный ключ для создания пары.')
Вы можете использовать данный ключ для создания пары.
Перебор значений в словаре Python
Если вам нужны значения словаря, воспользуйтесь методом .values():
person = {'имя': 'Алекс', 'возраст': 27, 'рост': 180, 'вес': 93, 'любимое блюдо': 'карбонара', 'машина': 'Mercedes-Benz'}
for values in person.values():
print(values)
Алекс
27
180
93
карбонара
Mercedes-Benz
Список в словаре Python
Давайте расширим список любимых блюд и добавим ещё парочку. Т.е значений получается больше одного, удобней всего объеденить блюда в словаре.
person = {'имя': 'Алекс',
'возраст': 27,
'рост': 180,
'вес': 93,
'любимое блюдо': ['карбонара', 'пельмешки', 'картошка с грибами'],
'машина': 'Mercedes-Benz'
}
Чтобы вывести список любимых блюд, нам достаточно пробежаться циклом по ключу 'любимое блюдо':
for values in person['любимое блюдо']:
print(values)
карбонара
пельмешки
картошка с грибами
Словарь в словаре Python
При работе с большими данными, часто можно встретить конструкцию словарь в словаре. На первый взгляд она может показаться сложной, но это лишь иллюзия.
Создадим новый словарь на основе старого. Пускай у нас будет словарь пользователей с краткой информацией о них.
persons = {
'Александр': {
'возраст': 27,
'рост': 180,
'вес': 93,
'любимое блюдо': ['карбонара', 'пельмешки', 'картошка с грибами'],
'машина': 'Mercedes-Benz'
},
'Ольга': {
'возраст': 28,
'рост': 165,
'вес': 48,
'любимое блюдо': ['кукуруза', 'креветки'],
'машина': 'bmw'
}
}
Ключами для наших словарей будут выступать имена Александр и Ольга. У каждого из пользователей есть значения, словарь в котором хранится подробная информация о каждом из них.
Чтобы получить подробную информацию, нам нужно сначала перебрать имена пользователей(ключи), а затем и их значения(информацию) связанную с каждым из них.
for username, userinfo in persons.items():
print('Имя пользователя: ' + username)
age = userinfo['возраст']
car = userinfo['машина']
print('Возраст пользователя ' + username + ': ' + str(age) + " лет.")
print('Авто пользователя ' + username + ': ' + str(car) + ".\n")
Имя пользователя: Александр
Возраст пользователя Александр: 27 лет.
Авто пользователя Александр: Mercedes-Benz.
Имя пользователя: Ольга
Возраст пользователя Ольга: 28 лет.
Авто пользователя Ольга: bmw.
Методы словарей в Python
my_dict.clear( ) - очищает словарь.
my_dict.copy( ) - возвращает копию словаря.
my_dict.update({'key': 'value'}) - добавляет новые пары в словарь, если добавляемый ключ уже существует, его значение будет перезаписано.
my_dict.get('key') - возвращает значение по указанному ключу, если такого ключа нет - возвращает None. Можно использовать для проверки ключей в словаре.
my_dict.pop('key') - удаляет указанный ключ и возвращает его значение.
my_dict.list( ) - возвращает список ключей словаря.
my_dict.values( ) - возвращает список значений словаря.
my_dict.items( ) - возвращает список пар ключ-значение.