0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p><strong>Словарь в Python</strong>- неупорядоченная структура данных, позволяющая хранить пары "ключ-значение". В этой статье вы узнаете, как выглядит словарь, какие используются методы при работе с ним, а также о том, как преобразовать список в словарь.</p>
1
<p><strong>Словарь в Python</strong>- неупорядоченная структура данных, позволяющая хранить пары "ключ-значение". В этой статье вы узнаете, как выглядит словарь, какие используются методы при работе с ним, а также о том, как преобразовать список в словарь.</p>
2
<p>Словарь (dictionary) в Python используется наряду с кортежами и списками, похожие структуры есть и в других языках программирования (ассоциативный массив в PHP, словарь в C#).</p>
2
<p>Словарь (dictionary) в Python используется наряду с кортежами и списками, похожие структуры есть и в других языках программирования (ассоциативный массив в PHP, словарь в C#).</p>
3
<p>Словарь, как и список, хранит коллекцию элементов. И каждый элемент в словаре, как было уже упомянуто, имеет<strong>уникальный ключ</strong>- с ним ассоциировано какое-либо значение.</p>
3
<p>Словарь, как и список, хранит коллекцию элементов. И каждый элемент в словаре, как было уже упомянуто, имеет<strong>уникальный ключ</strong>- с ним ассоциировано какое-либо значение.</p>
4
<p>Вот синтаксис словаря в Python:</p>
4
<p>Вот синтаксис словаря в Python:</p>
5
dictionary = { ключ1:значение1, ключ2:значение2, ....}<p>А вот ещё пример словаря:</p>
5
dictionary = { ключ1:значение1, ключ2:значение2, ....}<p>А вот ещё пример словаря:</p>
6
dictionary = {'персона': 'человек', 'марафон': 'гонка бегунов длиной около 26 миль', 'противостоять': 'оставаться сильным, несмотря на давление', 'бежать': 'двигаться со скоростью'}<p>Вышописанный словарь использует в качестве ключей<strong>строки</strong>. Но ключом может быть и другой неизменяемый тип данных, а значением конкретного ключа - что угодно. Давайте посмотрим на словарь, где ключи - это числа, а значения - это строки:</p>
6
dictionary = {'персона': 'человек', 'марафон': 'гонка бегунов длиной около 26 миль', 'противостоять': 'оставаться сильным, несмотря на давление', 'бежать': 'двигаться со скоростью'}<p>Вышописанный словарь использует в качестве ключей<strong>строки</strong>. Но ключом может быть и другой неизменяемый тип данных, а значением конкретного ключа - что угодно. Давайте посмотрим на словарь, где ключи - это числа, а значения - это строки:</p>
7
gender_dict = {0: 'муж', 1: 'жен'}<p><strong>Примечание</strong>: если будете применять в качестве ключа изменяемый тип данных (правильнее сказать, нехэшируемый, хотя обычно это одно и то же), то на выходе будет ошибка:</p>
7
gender_dict = {0: 'муж', 1: 'жен'}<p><strong>Примечание</strong>: если будете применять в качестве ключа изменяемый тип данных (правильнее сказать, нехэшируемый, хотя обычно это одно и то же), то на выходе будет ошибка:</p>
8
dictionary = {(1, 2.0): 'кортежи могут быть ключами', 1: 'целые числа могут быть ключами', 'бежать': 'строки тоже', ['носок', 1, 2.0]: 'а списки не могут'}<h2>Получаем данные из словаря</h2>
8
dictionary = {(1, 2.0): 'кортежи могут быть ключами', 1: 'целые числа могут быть ключами', 'бежать': 'строки тоже', ['носок', 1, 2.0]: 'а списки не могут'}<h2>Получаем данные из словаря</h2>
9
<p>Чтобы получить значения конкретного ключа используют квадратные скобки []. Представим, что у нас в словаре присутствует пара "марафон": 26.</p>
9
<p>Чтобы получить значения конкретного ключа используют квадратные скобки []. Представим, что у нас в словаре присутствует пара "марафон": 26.</p>
10
# берём значение с ключом "марафон" dictionary['марафон']<p>Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.</p>
10
# берём значение с ключом "марафон" dictionary['марафон']<p>Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.</p>
11
<h2>Как добавлять и обновлять ключи</h2>
11
<h2>Как добавлять и обновлять ключи</h2>
12
<p>Добавление в словарь новых пар выполняется просто:</p>
12
<p>Добавление в словарь новых пар выполняется просто:</p>
13
# Добавляем ключ "туфля" со значением "род обуви, который закрывает ногу не выше щиколотки" dictionary['туфля'] = 'род обуви, который закрывает ногу не выше щиколотки'<p>Для обновления делаем то же самое:</p>
13
# Добавляем ключ "туфля" со значением "род обуви, который закрывает ногу не выше щиколотки" dictionary['туфля'] = 'род обуви, который закрывает ногу не выше щиколотки'<p>Для обновления делаем то же самое:</p>
14
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'<h2>Как удалять ключи</h2>
14
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'<h2>Как удалять ключи</h2>
15
<p>Чтобы удалить ключ и соответствующее значение из словаря, используем<strong>del</strong>:</p>
15
<p>Чтобы удалить ключ и соответствующее значение из словаря, используем<strong>del</strong>:</p>
16
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']<h2>Методы</h2>
16
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']<h2>Методы</h2>
17
<p>Cловари имеют много полезных методов, помогающих в работе. Рассмотрим наиболее популярные.</p>
17
<p>Cловари имеют много полезных методов, помогающих в работе. Рассмотрим наиболее популярные.</p>
18
<h3>Update</h3>
18
<h3>Update</h3>
19
<p>Метод update() нужен при объявлении нескольких пар одновременно. В качестве аргумента метод принимает другой словарь:</p>
19
<p>Метод update() нужен при объявлении нескольких пар одновременно. В качестве аргумента метод принимает другой словарь:</p>
20
# Добавляем две пары в словарь dictionary, используя метод update dictionary.update({'бежал': 'бежать в прошедшем времени', 'туфли': 'туфля во множественном числе'}) >>> dictionary {'марафон': 'гонка бегунов длиной около 26 миль', 'персона': 'человек', 'бежал': 'бежать в прошедшем времени', 'бежать': 'двигаться со скоростью', 'туфля': 'род обуви, закрывающей ногу не выше щиколотки', 'туфли': 'туфля во множественном числе'}<p>Возможно, вы спросите, почему в словаре данные расположены в другом порядке, а не в том, в котором были в него внесены. Ответ прост - словари не упорядочены.</p>
20
# Добавляем две пары в словарь dictionary, используя метод update dictionary.update({'бежал': 'бежать в прошедшем времени', 'туфли': 'туфля во множественном числе'}) >>> dictionary {'марафон': 'гонка бегунов длиной около 26 миль', 'персона': 'человек', 'бежал': 'бежать в прошедшем времени', 'бежать': 'двигаться со скоростью', 'туфля': 'род обуви, закрывающей ногу не выше щиколотки', 'туфли': 'туфля во множественном числе'}<p>Возможно, вы спросите, почему в словаре данные расположены в другом порядке, а не в том, в котором были в него внесены. Ответ прост - словари не упорядочены.</p>
21
<h3>Get</h3>
21
<h3>Get</h3>
22
# Представьте, что у нас есть словарь story_count story_count = {'сто': 100, 'девяносто': 90, 'двенадцать': 12, 'пять': 5}<p>get() возвратит значение по указанному ключу. А если его нет, то метод вернёт нам None.</p>
22
# Представьте, что у нас есть словарь story_count story_count = {'сто': 100, 'девяносто': 90, 'двенадцать': 12, 'пять': 5}<p>get() возвратит значение по указанному ключу. А если его нет, то метод вернёт нам None.</p>
23
# Ключ "двенадцать" существует и метод get в данном случае вернёт 12 story_count.get('двенадцать')<p>Способ используют при проверке, а есть ли ключи в словаре:</p>
23
# Ключ "двенадцать" существует и метод get в данном случае вернёт 12 story_count.get('двенадцать')<p>Способ используют при проверке, а есть ли ключи в словаре:</p>
24
>>> story_count.get('два') None<p>Кроме того, вы можете указать значение по умолчанию - оно вернётся вместо None, если ключа не будет в словаре:</p>
24
>>> story_count.get('два') None<p>Кроме того, вы можете указать значение по умолчанию - оно вернётся вместо None, если ключа не будет в словаре:</p>
25
# Метод вернёт 0 в случае, если данного ключа не существует story_count.get('два', 0)<h3>Pop</h3>
25
# Метод вернёт 0 в случае, если данного ключа не существует story_count.get('два', 0)<h3>Pop</h3>
26
<p>Метод pop() служит для удаления ключа и возвращения соответствующего ему значения.</p>
26
<p>Метод pop() служит для удаления ключа и возвращения соответствующего ему значения.</p>
27
>>> story_count.pop('девяносто') 90 >>> story_count {'двенадцать': 12, 'сто': 100, 'пять': 5}<h3>Keys</h3>
27
>>> story_count.pop('девяносто') 90 >>> story_count {'двенадцать': 12, 'сто': 100, 'пять': 5}<h3>Keys</h3>
28
<p>Метод keys() необходим, чтобы возвратить коллекцию ключей в словаре:</p>
28
<p>Метод keys() необходим, чтобы возвратить коллекцию ключей в словаре:</p>
29
>>> story_count.keys() ['сто', 'пять', 'двенадцать']<h3>Values</h3>
29
>>> story_count.keys() ['сто', 'пять', 'двенадцать']<h3>Values</h3>
30
<p>Возвратит коллекцию значений в словаре.</p>
30
<p>Возвратит коллекцию значений в словаре.</p>
31
>>> story_count.values() [100, 12, 5]<h3>Items</h3>
31
>>> story_count.values() [100, 12, 5]<h3>Items</h3>
32
<p>Если нужно вернуть пары "ключ - значение", используют items():</p>
32
<p>Если нужно вернуть пары "ключ - значение", используют items():</p>
33
>>> dictionary.items() [('персона', 'человек'), ('бежать', 'двигаться со скоростью'), ('туфля', 'род обуви, закрывающей ногу не выше щиколотки'), ('бежал', 'бежать в прошедшем времени'), ('марафон', 'гонка бегунов длиной около 26 миль'), ('туфли', 'туфля во множественном числе')]<h2>Итерация через словарь</h2>
33
>>> dictionary.items() [('персона', 'человек'), ('бежать', 'двигаться со скоростью'), ('туфля', 'род обуви, закрывающей ногу не выше щиколотки'), ('бежал', 'бежать в прошедшем времени'), ('марафон', 'гонка бегунов длиной около 26 миль'), ('туфли', 'туфля во множественном числе')]<h2>Итерация через словарь</h2>
34
<p>В "Питоне" есть возможность выполнить итерацию в словаре по каждому ключу:</p>
34
<p>В "Питоне" есть возможность выполнить итерацию в словаре по каждому ключу:</p>
35
for key in story_count: print(key)<p>Кстати, вместо story_count можно применять story_count.keys().</p>
35
for key in story_count: print(key)<p>Кстати, вместо story_count можно применять story_count.keys().</p>
36
<p>Внимательно посмотрите на участок кода ниже: в нём цикл for использует метод items(), чтобы получить пары "ключ - значение" на каждую итерацию:</p>
36
<p>Внимательно посмотрите на участок кода ниже: в нём цикл for использует метод items(), чтобы получить пары "ключ - значение" на каждую итерацию:</p>
37
>>> for key, value in dictionary.items(): print(key, value) ('персона', 'человек') ('бежать', 'двигаться со скоростью') ('туфля', 'род обуви, закрывающей ногу не выше щиколотки') ('бежал', 'бежать в прошедшем времени') ('марафон', 'гонка бегунов длиной около 26 миль') ('туфли', 'туфля во множественном числе')<h2>Словарь и список: выполнение преобразования из списка в словарь</h2>
37
>>> for key, value in dictionary.items(): print(key, value) ('персона', 'человек') ('бежать', 'двигаться со скоростью') ('туфля', 'род обуви, закрывающей ногу не выше щиколотки') ('бежал', 'бежать в прошедшем времени') ('марафон', 'гонка бегунов длиной около 26 миль') ('туфли', 'туфля во множественном числе')<h2>Словарь и список: выполнение преобразования из списка в словарь</h2>
38
<p>Словарь (dictionary) и список (list) - типы, непохожие по своей структуре. Однако для отдельных видов списка есть возможность<strong>преобразования списка в словарь</strong>. Для этого используют встроенную функцию dict(). Необходимо, чтобы список хранил набор вложенных списков. Также нужно, чтобы каждый вложенный список состоял из 2-х элементов. В результате во время конвертации списка в словарь 1-й элемент превратится в ключ, 2-й - в значение:</p>
38
<p>Словарь (dictionary) и список (list) - типы, непохожие по своей структуре. Однако для отдельных видов списка есть возможность<strong>преобразования списка в словарь</strong>. Для этого используют встроенную функцию dict(). Необходимо, чтобы список хранил набор вложенных списков. Также нужно, чтобы каждый вложенный список состоял из 2-х элементов. В результате во время конвертации списка в словарь 1-й элемент превратится в ключ, 2-й - в значение:</p>
39
users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"}<p>Таким же образом возможно преобразование в словарь не только списка, но и двухмерных кортежей:</p>
39
users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"}<p>Таким же образом возможно преобразование в словарь не только списка, но и двухмерных кортежей:</p>
40
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)<p>Материал подготовлен специально для OTUS на основании статьи "<a>Python Dictionary and Dictionary Methods</a>".</p>
40
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)<p>Материал подготовлен специально для OTUS на основании статьи "<a>Python Dictionary and Dictionary Methods</a>".</p>
41
41