Documentation Blog Login SignUp
Menu
Telegram Twitter Instagram Zen
  • Установка Python
    • Установка Python на Linux
    • Установка Python на Windows
  • Виртуальное окружение
    • Виртуальное окружение
  • Типы данных
    • Типы данных в Python
    • Boolean
    • Numbers(Числа)
    • Strings(Строки)
    • Lists(Списки)
    • Tuple(Кортежи)
    • Dict(Словари)
    • Set(Множества)
  • Встроенные функции
    • Встроенные функции
    • Функции преобразования типов
    • abs( )
    • input( )
    • isinstance( )
    • len( )
    • range( )
    • sorted( )
    • type( )
  • Оператор if
    • Оператор if-elif-else

Словари в Python

June 15, 2020 379 просмотров
Содержание #Словари в 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( ) - возвращает список пар ключ-значение.