MyTetra Share
Делитесь знаниями!
Словари и их методы в Python
Время создания: 29.07.2019 23:51
Раздел: Разные закладки - Python - Модули
Запись: xintrea/mytetra_db_adgaver_new/master/base/1533844402oy3f6ifyrs/text.html на raw.githubusercontent.com

Что такое словарь

Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Вот пример словаря на Python:

dictionary = {'персона': 'человек',

'марафон': 'гонка бегунов длиной около 26 миль',

'противостоять': 'оставаться сильным, несмотря на давление',

'бежать': 'двигаться со скоростью'}


Данный словарь использует строки в качестве ключей, однако ключом может являться в принципе любой неизменяемый тип данных. Значением же конкретного ключа может быть что угодно. Вот ещё один пример словаря, где ключами являются числа, а значениями — строки:

gender_dict = {0: 'муж',

1: 'жен'}



Важное уточнение: если вы попробуете использовать изменяемый тип данных в качестве ключа, то получите ошибку:

dictionary = {(1, 2.0): 'кортежи могут быть ключами',

1: 'целые числа могут быть ключами',

'бежать': 'строки тоже',

['носок', 1, 2.0]: 'а списки не могут'}



Прим. перев. На самом деле проблема не с изменяемыми, а с нехэшируемыми типами данных, но обычно это одно и то же.

Получение данных из словаря

Для получения значения конкретного ключа используются квадратные скобки []. Предположим, что в нашем словаре есть пара 'марафон': 26.

# берём значение с ключом "марафон"

dictionary['марафон']


Опять же, вы получите ошибку, если попытаетесь получить значение по несуществующему ключу. Для избежания подобных ошибок существуют методы, о которых мы сейчас поговорим.

Добавление и обновление ключей

Добавление новых пар в словарь происходит достаточно просто:

# Добавляем ключ "туфля" со значением "род обуви, закрывающей ногу не выше щиколотки"

dictionary['туфля'] = 'род обуви, закрывающей ногу не выше щиколотки'


Обновление существующих значений происходит абсолютно также:

# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля"

dictionary['туфля'] = 'хорошая туфля'


Удаление ключей

Для удаления ключа и соответствующего значения из словаря можно использовать del

# Удаляем значение с ключом "противостоять" из словаря

del dictionary['противостоять']


Методы

Словари в Python имеют множество различных полезных методов, которые помогут вам в работе с ними. Вот лишь некоторые из них:

Update

Метод update() пригодится, если нужно обновить несколько пар сразу. Метод принимает другой словарь в качестве аргумента.

# Добавляем две пары в словарь dictionary, используя метод update

dictionary.update({'бежал': 'бежать в прошедшем времени',

'туфли': 'туфля во множественном числе'})


 

>>> dictionary

{'марафон': 'гонка бегунов длиной около 26 миль',

'персона': 'человек',

'бежал': 'бежать в прошедшем времени',

'бежать': 'двигаться со скоростью',

'туфля': 'род обуви, закрывающей ногу не выше щиколотки',

'туфли': 'туфля во множественном числе'}


Если вас интересует, почему данные в словаре расположены не в том порядке, в котором они были внесены в него, то это потому что словари не упорядочены.

Get

# Допустим, у нас есть словарь story_count

story_count = {'сто': 100,

'девяносто': 90,

'двенадцать': 12,

'пять': 5}


Метод get() возвращает значение по указанному ключу. Если указанного ключа не существует, метод вернёт None.

# Ключ "двенадцать" существует и метод get в данном случае вернёт 12

story_count.get('двенадцать')


Метод можно использовать для проверки наличия ключей в словаре:

>>> story_count.get('два')

None


Также можно указать значение по умолчанию, которое будет возвращено вместо None, если ключа в словаре не окажется:

# Метод вернёт 0 в случае, если данного ключа не существует

story_count.get('два', 0)


Pop

Метод pop() удаляет ключ и возвращает соответствующее ему значение.

>>> story_count.pop('девяносто')

90

>>> story_count

{'двенадцать': 12, 'сто': 100, 'пять': 5}


Keys

Метод keys() возвращает коллекцию ключей в словаре.

>>> story_count.keys()

['сто', 'пять', 'двенадцать']


Values

Метод values() возвращает коллекцию значений в словаре.

>>> story_count.values()

[100, 12, 5]


Items

Метод items() возвращает пары «ключ — значение».

>>> dictionary.items()

[('персона', 'человек'),

('бежать', 'двигаться со скоростью'),

('туфля', 'род обуви, закрывающей ногу не выше щиколотки'),

('бежал', 'бежать в прошедшем времени'),

('марафон', 'гонка бегунов длиной около 26 миль'),

('туфли', 'туфля во множественном числе')]


 

Итерация через словарь

Вы можете провести итерацию по каждому ключу в словаре.

for key in story_count:

print(key)


Очевидно, вместо story_count можно использовать story_count.keys().

В примере кода ниже ниже цикл for использует метод items() для получения пары «ключ — значение» на каждую итерацию.

>>> for key, value in dictionary.items():

print(key, value)

('персона', 'человек')

('бежать', 'двигаться со скоростью')

('туфля', 'род обуви, закрывающей ногу не выше щиколотки')

('бежал', 'бежать в прошедшем времени')

('марафон', 'гонка бегунов длиной около 26 миль')

('туфли', 'туфля во множественном числе')


О словаре и других типах данных Python можно почитать в нашей статье .

Перевод статьи «Python Dictionary and Dictionary Methods»

 
MyTetra Share v.0.65
Яндекс индекс цитирования