Словарь python: Словари и их методы в Python
Словари и их методы в Python
Что такое словарь
Словарь — неупорядоченная структура данных, которая позволяет хранить пары «ключ — значение». Вот пример словаря на 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»
Словари. Урок 21 курса «Python. Введение в программирование»
В языке программирования Python словари (тип dict) представляют собой еще одну разновидность структур данных наряду со списками и кортежами. Словарь — это изменяемый (как список) неупорядоченный (в отличие от строк, списков и кортежей) набор элементов «ключ:значение».
«Неупорядоченный» – значит, что последовательность расположения пар не важна. Язык программирования ее не учитывает, в следствие чего обращение к элементам по индексам невозможно.
В других языках структуры, схожие со словарями, называются по-другому. Например, в Java подобный тип данных называется отображением.
Чтобы представление о словаре стало более понятным, проведем аналогию с обычным словарем, например, англо-русским. На каждое английское слово в таком словаре есть русское слово-перевод: cat – кошка, dog – собака, table – стол и т. д. Если англо-русский словарь описать с помощью Python, то английские слова можно сделать ключами, а русские – их значениями:
{'cat': 'кошка', 'dog': 'собака', 'bird': 'птица', 'mouse': 'мышь'}
Обратите внимание на фигурные скобки, именно с их помощью определяется словарь. Синтаксис словаря на Питоне описывается такой схемой:
Часто при выводе словаря последовательность пар «ключ:значение» не совпадает с тем, как было введено:
>>> a = {'cat': 'кошка', 'dog': 'собака', ... 'bird': 'птица', 'mouse': 'мышь'} >>> a {'dog': 'собака', 'cat': 'кошка', 'bird': 'птица', 'mouse': 'мышь'}
Поскольку в словаре не важен порядок пар, то интерпретатор выводит их так, как ему удобно. Тогда как получить доступ к определенному элементу, если индексация не возможна в принципе? В словаре доступ к значениям осуществляется по ключам, которые заключаются в квадратные скобки (по аналогии с индексами списков):
>>> a['cat'] 'кошка' >>> a['bird'] 'птица'
Словари, как и списки, являются изменяемым типом данных: позволительно изменять, добавлять и удалять элементы (пары «ключ:значение»). Изначально словарь можно создать пустым (например, d = {}) и потом заполнить его элементами. Добавление и изменение имеет одинаковый синтаксис: словарь[ключ] = значение. Ключ может быть как уже существующим (тогда происходит изменение значения), так и новым (происходит добавление элемента словаря). Удаление элемента осуществляется с помощью встроенной оператора del языка Python.
>>> a['elephant'] = 'бегемот' # добавляем >>> a['table'] = 'стол' # добавляем >>> a {'dog': 'собака', 'cat': 'кошка', 'mouse': 'мышь', 'bird': 'птица', 'table': 'стол', 'elephant': 'бегемот'} >>> a['elephant'] = 'слон' # изменяем >>> del a['table'] # удаляем >>> a {'dog': 'собака', 'cat': 'кошка', 'mouse': 'мышь', 'bird': 'птица', 'elephant': 'слон'}
В словаре не может быть двух элементов с одинаковыми ключами. Однако могут быть одинаковые значения у разных ключей.
Ключом может быть любой неизменяемый тип данных. Значением – любой тип данных. Значения словарей вполне могут быть структурами, например, другими словарями или списками.
>>> nums = {1: 'one', 2: 'two', 3: 'three'} >>> person = {'name': 'Tom', 1: [30, 15, 16], ... 2: 2.34, ('ab', 100): 'no'}
Перебор элементов словаря в цикле for
Элементы словаря перебираются в цикле for также, как элементы других сложных объектов. Однако «по-умолчанию» извлекаются только ключи:
>>> nums {1: 'one', 2: 'two', 3: 'three'} >>> for i in nums: ... print(i) ... 1 2 3
Но по ключам всегда можно получить значения:
>>> for i in nums: ... print(nums[i]) ... one two three
С другой стороны у словаря как класса есть метод items(), который создает особую структуру, состоящую из кортежей. Каждый кортеж включает ключ и значение:
>>> n = nums.items() >>> n dict_items([(1, 'one'), (2, 'two'), (3, 'three')])
В цикле for можно распаковывать кортежи, таким образом сразу извлекая как ключ, так и его значение:
>>> for key, value in nums.items(): ... print(key, 'is', value) ... 1 is one 2 is two 3 is three
Методы словаря keys() и values() позволяют получить отдельно перечни ключей и значений. Так что если, например, надо перебрать только значения или только ключи, лучше воспользоваться одним из этих методов:
>>> v_nums = [] >>> for v in nums.values(): ... v_nums.append(v) ... >>> v_nums ['one', 'two', 'three']
Методы словаря
Кроме рассмотренных выше трех методов items(), keys() и values() словари обладают еще восемью. Это методы clear(), copy(), fromkeys(), get(), pop(), popitem(), setdefault(), update().
Метод clear() удаляет все элементы словаря, но не удаляет сам словарь. В итоге остается пустой словарь:
>>> a {'dog': 'собака', 'cat': 'кошка', 'mouse': 'мышь', 'bird': 'птица', 'elephant': 'слон'} >>> a.clear() >>> a {}
Словарь – это изменяемый тип данных. Следовательно, как и список он передается в функцию по ссылке. Поэтому иногда, чтобы избежать нежелательного изменения глобального словаря его копируют. Это делают и с другими целями.
>>> nums2 = nums.copy() >>> nums2[4] = 'four' >>> nums {1: 'one', 2: 'two', 3: 'three'} >>> nums2 {1: 'one', 2: 'two', 3: 'three', 4: 'four'}
Метод fromkeys() позволяет создать словарь из списка, элементы которого становятся ключами. Применять метод можно как классу dict, так и к его объектам:
>>> a = [1, 2, 3] >>> c = dict.fromkeys(a) >>> c {1: None, 2: None, 3: None} >>> d = dict.fromkeys(a, 10) >>> d {1: 10, 2: 10, 3: 10} >>> c {1: None, 2: None, 3: None}
Метод get() позволяет получить элемент по его ключу:
>>> nums.get(1) 'one'
Равносильно nums[1]
.
Метод pop() удаляет из словаря элемент по указанному ключу и возвращает значение удаленной пары. Метод popitem() не принимает аргументов, удаляет и возвращает произвольный элемент.
>>> nums.pop(1) 'one' >>> nums {2: 'two', 3: 'three'} >>> nums.popitem() (2, 'two') >>> nums {3: 'three'}
С помощью setdefault() можно добавить элемент в словарь:
>>> nums.setdefault(4, 'four') 'four' >>> nums {3: 'three', 4: 'four'}
Равносильно nums[4] = 'four'
, если элемент с ключом 4 отсутствует в словаре. Если он уже есть, то nums[4] = 'four'
перезапишет старое значение, setdefault() – нет.
С помощью update() можно добавить в словарь другой словарь:
>>> nums.update({6: 'six', 7: 'seven'}) >>> nums {3: 'three', 4: 'four', 6: 'six', 7: 'seven'}
Также метод обновляет значения существующих ключей. Включает еще ряд особенностей.
Практическая работа
Создайте словарь, связав его с переменной school, и наполните данными, которые бы отражали количество учащихся в разных классах (1а, 1б, 2б, 6а, 7в и т. п.). Внесите изменения в словарь согласно следующему: а) в одном из классов изменилось количество учащихся, б) в школе появился новый класс, с) в школе был расформирован (удален) другой класс. Вычислите общее количество учащихся в школе.
Создайте словарь, где ключами являются числа, а значениями – строки. Примените к нему метод items(), полученный объект dict_items передайте в написанную вами функцию, которая создает и возвращает новый словарь, «обратный» исходному, т. е. ключами являются строки, а значениями – числа.
Примеры решения и дополнительные уроки в android-приложении и pdf-версии курса
Словари и методы в Python. Добавление списка в словарь
Словарь в Python — неупорядоченная структура данных, позволяющая хранить пары «ключ-значение». В этой статье вы узнаете, как выглядит словарь, какие используются методы при работе с ним, а также о том, как преобразовать список в словарь.
Словарь (dictionary) в Python используется наряду с кортежами и списками, похожие структуры есть и в других языках программирования (ассоциативный массив в PHP, словарь в C#).
Словарь, как и список, хранит коллекцию элементов. И каждый элемент в словаре, как было уже упомянуто, имеет уникальный ключ — с ним ассоциировано какое-либо значение.
Вот синтаксис словаря в Python:
dictionary = { ключ1:значение1, ключ2:значение2, ....}А вот ещё пример словаря:
dictionary = {'персона': 'человек', 'марафон': 'гонка бегунов длиной около 26 миль', 'противостоять': 'оставаться сильным, несмотря на давление', 'бежать': 'двигаться со скоростью'}Вышописанный словарь использует в качестве ключей строки. Но ключом может быть и другой неизменяемый тип данных, а значением конкретного ключа — что угодно. Давайте посмотрим на словарь, где ключи — это числа, а значения — это строки:
gender_dict = {0: 'муж', 1: 'жен'}Примечание: если будете применять в качестве ключа изменяемый тип данных (правильнее сказать, нехэшируемый, хотя обычно это одно и то же), то на выходе будет ошибка:
dictionary = {(1, 2.0): 'кортежи могут быть ключами', 1: 'целые числа могут быть ключами', 'бежать': 'строки тоже', ['носок', 1, 2.0]: 'а списки не могут'}Получаем данные из словаря
Чтобы получить значения конкретного ключа используют квадратные скобки []. Представим, что у нас в словаре присутствует пара «марафон»: 26.
# берём значение с ключом «марафон» dictionary['марафон']Но если вы захотите получить значение, используя не существующий ключ, будет ошибка. Чтобы избежать ошибок, применяют методы.
Как добавлять и обновлять ключи
Добавление в словарь новых пар выполняется просто:
# Добавляем ключ «туфля» со значением «род обуви, который закрывает ногу не выше щиколотки» dictionary['туфля'] = 'род обуви, который закрывает ногу не выше щиколотки'Для обновления делаем то же самое:
# Обновляем ключ "туфля" и присваиваем ему значение "хорошая туфля" dictionary['туфля'] = 'хорошая туфля'Как удалять ключи
Чтобы удалить ключ и соответствующее значение из словаря, используем del:
# Удаляем значение с ключом "противостоять" из словаря del dictionary['противостоять']Методы
Cловари имеют много полезных методов, помогающих в работе. Рассмотрим наиболее популярные.
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
Возвратит коллекцию значений в словаре.
>>> 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 миль') ('туфли', 'туфля во множественном числе')Словарь и список: выполнение преобразования из списка в словарь
Словарь (dictionary) и список (list) — типы, непохожие по своей структуре. Однако для отдельных видов списка есть возможность преобразования списка в словарь. Для этого используют встроенную функцию dict(). Необходимо, чтобы список хранил набор вложенных списков. Также нужно, чтобы каждый вложенный список состоял из 2-х элементов. В результате во время конвертации списка в словарь 1-й элемент превратится в ключ, 2-й — в значение:
users_list = [ ["+111123455", "Tom"], ["+384767557", "Bob"], ["+958758767", "Alice"] ] users_dict = dict(users_list) print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"}Таким же образом возможно преобразование в словарь не только списка, но и двухмерных кортежей:
users_tuple = ( ("+111123455", "Tom"), ("+384767557", "Bob"), ("+958758767", "Alice") ) users_dict = dict(users_tuple) print(users_dict)Материал подготовлен специально для OTUS на основании статьи «Python Dictionary and Dictionary Methods».
Введение в Python. Часть 6. Словари
Поговорим о словарях. Не тех, конечно, что составили Даль или Ожегов, а о словарях в Python. Словарь в Python — это неупорядоченный набор элементов. Давайте на примере разберемся, что это такое и как работает.
Видео: Глеб Лиманский
Создать пустой словарь можно с помощью фигурных скобок. Или с помощью функции dict().
Но давайте наполним наш словарь данными и посмотрим, как это работает. Вот, например, словарь, в котором хранятся данные о трех о публичных должностных лицах с самым высоким декларируемым доходом. Имя должностного лица это ключ, а доход — это значение.
И мы можем обращаться к словарям в питоне именно по ключу. Сначала указываем словарь, затем в квадратных скобках ключ. Вернется значение.
Через ключ же в словарь можно и добавлять новые элементы. Давайте добавим Владимира Путина и его декларируемый доход за 2019 год. И сразу проверим, добавился ли он в словарь.
Только важно понимать, что между уже известными вам списками и словарями есть существенная разница. Списки — это упорядоченный набор данных, а словари — неупорядоченный. Поэтому элементы в словаре не имеют индекса. Нельзя посмотреть, каким по счет идет Владимир Путин, и использовать этот номер, чтобы обратиться к нему. Подобная попытка закончится ошибкой.
Эта ошибка означает, что в словаре нет такого ключа как 3, число которое мы пытались использовать в качестве индекса элемента. Обращаться к словарям можно только по ключу. Поэтому, если значения, которое вы указываете в квадратных скобках, нет в словаре — получите такую же ошибку. Но есть еще один способ, как можно получать значения из словаря, но не опасаться при этом ошибок. Это метод .get().
В скобочках вы указываете ключ, значение которого хотите получить, а через запятую указываете то, что хотите получить в случае, если такого ключа нет в словаре. В примере мы получим строку «нет ключа» в ответ. Если через запятую не указывать ничего, то по умолчанию будет возвращаться None.
В словарях ключами и значениями могут быть разные типы данных. Например, и то, и другое может быть числом. Только если ваш ключ — это число, то указывать его в квадратных скобках при обращении нужно тоже как число. Если вы укажете его в кавычках, то это будет уже другое значение. Вы снова получите ошибку, что такого ключа нет в словаре.
Значениями в словаре так же могут быть и списки. Давайте теперь в словарь добавим элемент, ключом которого будет снова Владимир Путин, а значение — его декларируемый доход за последние три года в виде списка.
Обратите внимание, что запись с Владимиром Путиным, где был доход только за 2019 год исчезла, осталась только последняя добавленная нами запись с доходами за последние три года. Дело в том, что в словаре не может существовать двух элементов с одинаковым ключом. Если вы добавите элемент с ключом, который уже есть в словаре, то он просто перезапишется.
Подписывайтесь на рассылку «Мастерской»
Вы узнаете о крутых инструментах для сбора, анализа и визуализации данных
Удалять элемент из словаря можно с помощью .pop(). В скобках нужно указать ключ элемента. Он удалится, и вам вернется удаленное значение. Давайте попробуем удалить Владимира Путина хотя бы из словаря.
Еще словари хороши тем, что мы можем получить отдельно список всех ключей и всех значение. Для первого нам поможем метод .keys(), а для второго — .values().
Создадим новый словарь, в котором у нас будут храниться доходы за последние три года Владимира Путина и Дмитрия Медведева. И напишем небольшой код, который будет перебирать элементы этого словаря и печатать нам сообщение о том, у кого каким за последние три года был минимальный доход. И для решения этой задачки нам потребуется еще один метод словаря .items(). Если метод .keys() позволял нам получить список всех ключей, этот список мы могли перебирать, по аналогии же работает .values(), то .items() позволяет попарно перебирать и ключ, и значение.
Нам осталось только перебирая ключи и значения, определить минимальный доход и вывести сообщение на экран. Для этого используем функцию min(), которая вернет минимальное значение из списка и print().
Это и есть основные методы словаря, которые чаще всего используются в работе. Еще больше методов словаря можете посмотреть здесь. А ссылка на тетрадку Jupyter Notebook как всегда на нашем GitHub здесь.
Как я могу добавить новые ключи в словарь?
Можно ли добавить ключ в словарь Python после его создания?
Похоже, у него нет метода
.add()
.python
dictionary
lookup
Поделиться
Источник
lfaraone21 июня 2009 в 22:07
16 ответов
3524d = {'key': 'value'} print(d) # {'key': 'value'} d['mynewkey'] = 'mynewvalue' print(d) # {'key': 'value', 'mynewkey': 'mynewvalue'}
вы создаете новую пару key\value в словаре, присваивая ей значение
к этому ключу. Если ключ не существует, он добавляется и указывает на это
значение. Если он существует, текущее значение, на которое он указывает, перезаписывается.
— R. НавегаПоделиться
Paolo Bergantino21 июня 2009 в 22:09
1071Чтобы добавить несколько ключей одновременно, используйте
dict.update()
:>>> x = {1:2} >>> print(x) {1: 2} >>> d = {3:4, 5:6, 7:8} >>> x.update(d) >>> print(x) {1: 2, 3: 4, 5: 6, 7: 8}
Для добавления одного ключа принятый ответ имеет меньшие вычислительные издержки.
Поделиться
Unknown22 июля 2009 в 14:48
975Мне хочется консолидировать информацию о словарях Python:
Создание пустого словаря
data = {} # OR data = dict()
Создание словаря с начальными значениями
data = {'a': 1, 'b': 2, 'c': 3} # OR data = dict(a=1, b=2, c=3) # OR data = {k: v for k, v in (('a', 1), ('b',2), ('c',3))}
Вставка/обновление одного значения
data['a'] = 1 # Updates if 'a' exists, else adds 'a' # OR data.update({'a': 1}) # OR data.update(dict(a=1)) # OR data.update(a=1)
Вставка/обновление нескольких значений
data.update({'c':3,'d':4}) # Updates 'c' and adds 'd'
Создание объединенного словаря без изменения оригиналов
data3 = {} data3.update(data) # Modifies data3, not data data3.update(data2) # Modifies data3, not data2
Удаление элементов в словаре
del data[key] # Removes specific element in a dictionary data.pop(key) # Removes the key & returns the value data.clear() # Clears entire dictionary
Проверьте, есть ли ключ уже в словаре
key in data
Перебирайте пары в словаре
for key in data: # Iterates just through the keys, ignoring the values for key, value in d.items(): # Iterates through the pairs for key in d.keys(): # Iterates just through key, ignoring the values for value in d.values(): # Iterates just through value, ignoring the keys
Создайте словарь из двух списков
data = dict(zip(list_with_keys, list_with_values))
Создание объединенного словаря без изменения оригиналов:
При этом используется новая функция, называемая распаковкой словаря .
data = {**data1, **data2, **data3}
Обновление или добавление значений для существующего словаря
Оператор обновления
|=
теперь работает для словарей:data |= {'c':3,'d':4}
Создание объединенного словаря без изменения оригиналов
Оператор слияния
|
теперь работает для словарей:data = data1 | {'c':3,'d':4}
Не стесняйтесь добавлять больше!
Поделиться
Yugal Jindle05 декабря 2011 в 06:07
- Установить новые ключи в словарь
У меня есть словарь python. A=[0:’dog’,1:’cat’,3:’fly’,4,’fish’,6:’lizard’] Я хочу сбросить ключи в соответствии с range(len(A)) (естественным приращением), которое должно выглядеть следующим образом: new_A=[0:’dog’,1:’cat’,2:’fly’,3:’fish’,4:’lizard’] Как я мог это сделать?
- Как добавить новые сведения в словарь с помощью пользовательского ввода через CMD
Я новичок в программировании Python и создал метод, позволяющий принимать новое имя студента и новую оценку в существующий словарь с помощью пользовательского ввода от cmd, но мне трудно сортировать его. Как мне с этим разобраться? Я смог правильно закодировать другие методы. Только…
150
Да, это возможно, и у него есть метод, который реализует это, но вы не хотите использовать его напрямую.
Чтобы продемонстрировать, как можно и как нельзя использовать его, давайте создадим пустой словарь с словарь буквальном, {}
:
my_dict = {}
Лучшая практика 1: Подстрочная нотация
Чтобы обновить этот дикт с помощью одного нового ключа и значения, вы можете использовать подстрочную нотацию (см. сопоставления здесь) , которая обеспечивает назначение элемента:
my_dict['new key'] = 'new value'
my_dict
— это сейчас:
{'new key': 'new value'}
Лучшая практика 2: метод
update
— 2 способа
Мы также можем эффективно обновить dict с несколькими значениями, используя метод update
. Возможно, мы напрасно создаем здесь дополнительный dict
, поэтому мы надеемся, что наш dict
уже был создан и пришел или был использован для другой цели:
my_dict.update({'key 2': 'value 2', 'key 3': 'value 3'})
my_dict
— это сейчас:
{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value'}
Еще один эффективный способ сделать это с помощью метода update-это использовать аргументы ключевых слов, но поскольку они должны быть законными словами python, вы не можете использовать пробелы или специальные символы или начинать имя с цифры, но многие считают это более читаемым способом создания ключей для dict, и здесь мы, конечно, избегаем создания дополнительных ненужных dict
:
my_dict.update(foo='bar', foo2='baz')
а теперь my_dict
:
{'key 2': 'value 2', 'key 3': 'value 3', 'new key': 'new value',
'foo': 'bar', 'foo2': 'baz'}
Итак, мы рассмотрели три подходящие для Python способов обновления dict
.
Есть еще один способ обновления dict
, который вы не должны использовать, который использует метод __setitem__
. Вот пример того , как можно использовать метод __setitem__
для добавления пары ключ-значение к dict
, и демонстрация низкой производительности его использования:
>>> d = {}
>>> d.__setitem__('foo', 'bar')
>>> d
{'foo': 'bar'}
>>> def f():
... d = {}
... for i in xrange(100):
... d['foo'] = i
...
>>> def g():
... d = {}
... for i in xrange(100):
... d.__setitem__('foo', i)
...
>>> import timeit
>>> number = 100
>>> min(timeit.repeat(f, number=number))
0.0020880699157714844
>>> min(timeit.repeat(g, number=number))
0.005071878433227539
Таким образом, мы видим, что использование подстрочной нотации на самом деле намного быстрее, чем использование __setitem__
. Использование языка в том виде, в каком он был задуман, как правило, является более удобным для чтения и более эффективным с вычислительной точки зрения.
Поделиться
Aaron Hall
29 ноября 2014 в 23:57
Поделиться
Jason Creighton
21 июня 2009 в 22:08
59
Если вы хотите добавить словарь в словарь, вы можете сделать это следующим образом.
Пример: добавьте новую запись в свой словарь & sub dictionary
dictionary = {}
dictionary["new key"] = "some new entry" # add new dictionary entry
dictionary["dictionary_within_a_dictionary"] = {} # this is required by python
dictionary["dictionary_within_a_dictionary"]["sub_dict"] = {"other" : "dictionary"}
print (dictionary)
Выход:
{'new key': 'some new entry', 'dictionary_within_a_dictionary': {'sub_dict': {'other': 'dictionarly'}}}
NOTE: Python требует, чтобы вы сначала добавили sub
dictionary["dictionary_within_a_dictionary"] = {}
перед добавлением записей.
Поделиться
Asher
26 апреля 2012 в 19:04
50
Обычный синтаксис- d[key] = value
, но если на вашей клавиатуре отсутствуют клавиши с квадратными скобками, вы также можете это сделать:
d.__setitem__(key, value)
Фактически, определение методов __getitem__
и __setitem__
-это то, как вы можете сделать свой собственный класс поддерживающим синтаксис квадратных скобок. См . https://python.developpez.com/cours/DiveIntoPython/php/endiveintopython/object_oriented_framework/special_class_methods.php
Поделиться
Colonel Panic
14 апреля 2013 в 00:58
38
Вы можете создать его:
class myDict(dict):
def __init__(self):
self = dict()
def add(self, key, value):
self[key] = value
## example
myd = myDict()
myd.add('apples',6)
myd.add('bananas',3)
print(myd)
Дает:
>>>
{'apples': 6, 'bananas': 3}
Поделиться
kiriloff
25 мая 2013 в 13:33
32
Этот популярный вопрос касается функциональных методов объединения словарей a
и b
.
Вот некоторые из наиболее простых методов (проверено в Python 3)…
c = dict( a, **b ) ## see also https://stackoverflow.com/q/2255878
c = dict( list(a.items()) + list(b.items()) )
c = dict( i for d in [a,b] for i in d.items() )
Примечание: первый метод выше работает только в том случае, если ключи в b
являются строками.
Чтобы добавить или изменить один элемент , словарь b
будет содержать только этот один элемент…
c = dict( a, **{'d':'dog'} ) ## returns a dictionary based on 'a'
Это эквивалентно…
def functional_dict_add( dictionary, key, value ):
temp = dictionary.copy()
temp[key] = value
return temp
c = functional_dict_add( a, 'd', 'dog' )
Поделиться
Brent Bradburn
17 августа 2013 в 23:04
22
Давайте представим, что вы хотите жить в неизменном мире и не хотите изменять оригинал, но хотите создать новый dict
, который является результатом добавления нового ключа к оригиналу.
В Python 3.5+ вы можете сделать:
params = {'a': 1, 'b': 2}
new_params = {**params, **{'c': 3}}
В Python 2 эквивалента:
params = {'a': 1, 'b': 2}
new_params = dict(params, **{'c': 3})
После любого из них:
params
is still equal to {'a': 1, 'b': 2}
и
new_params
is equal to {'a': 1, 'b': 2, 'c': 3}
Бывают случаи, когда вы не хотите изменять оригинал (Вам нужен только результат добавления к оригиналу). Я нахожу это освежающей альтернативой следующему:
params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params['c'] = 3
или
params = {'a': 1, 'b': 2}
new_params = params.copy()
new_params.update({'c': 3})
Ссылка: https://stackoverflow.com/a/2255892/514866
Поделиться
campeterson
12 января 2018 в 19:31
18
Так много ответов, и все же все забыли о странно названном, странно себя повели, и все же все еще удобно dict.setdefault()
Этот
value = my_dict.setdefault(key, default)
в основном просто делает это:
try:
value = my_dict[key]
except KeyError: # key not found
value = my_dict[key] = default
например
>>> mydict = {'a':1, 'b':2, 'c':3}
>>> mydict.setdefault('d', 4)
4 # returns new value at mydict['d']
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # a new key/value pair was indeed added
# but see what happens when trying it on an existing key...
>>> mydict.setdefault('a', 111)
1 # old value was returned
>>> print(mydict)
{'a':1, 'b':2, 'c':3, 'd':4} # existing key was ignored
Поделиться
Michael Ekoka
23 октября 2017 в 14:03
6
Если вы не объединяете два словаря, а добавляете новые пары ключ-значение в словарь, то использование подстрочной нотации кажется лучшим способом.
import timeit
timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary.update({"aaa": 123123, "asd": 233})')
>> 0.49582505226135254
timeit.timeit('dictionary = {"karga": 1, "darga": 2}; dictionary["aaa"] = 123123; dictionary["asd"] = 233;')
>> 0.20782899856567383
Однако если вы хотите добавить, например, тысячи новых пар ключ-значение, вам следует рассмотреть возможность использования метода update()
.
Поделиться
Burak Özdemir
11 октября 2018 в 08:57
4
Я думаю , что было бы также полезно указать на модуль Python collections
, который состоит из многих полезных подклассов словаря и оболочек, которые упрощают добавление и модификацию типов данных в словаре, в частности defaultdict
:
подкласс dict, вызывающий фабричную функцию для предоставления пропущенных значений
Это особенно полезно, если вы работаете со словарями, которые всегда состоят из одних и тех же типов данных или структур, например со словарем списков.
>>> from collections import defaultdict
>>> example = defaultdict(int)
>>> example['key'] += 1
>>> example['key']
defaultdict(<class 'int'>, {'key': 1})
Если ключ еще не существует, defaultdict
присваивает заданное значение (в нашем случае 10
) в качестве начального значения словарю (часто используемому внутри циклов). Поэтому эта операция выполняет две вещи: добавляет новый ключ в словарь (в соответствии с вопросом) и присваивает значение, если ключ еще не существует. В стандартном словаре это вызвало бы ошибку, так как операция +=
пытается получить доступ к значению, которое еще не существует:
>>> example = dict()
>>> example['key'] += 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'key'
Без использования defaultdict
объем кода для добавления нового элемента был бы намного больше и , возможно, выглядел бы примерно так:
# This type of code would often be inside a loop
if 'key' not in example:
example['key'] = 0 # add key and initial value to dict; could also be a list
example['key'] += 1 # this is implementing a counter
defaultdict
также может использоваться со сложными типами данных, такими как list
и set
:
>>> example = defaultdict(list)
>>> example['key'].append(1)
>>> example
defaultdict(<class 'list'>, {'key': [1]})
Добавление элемента автоматически инициализирует список.
Поделиться
m_____z
27 августа 2019 в 21:21
4
Вот еще один способ, которого я здесь не видел:
>>> foo = dict(a=1,b=2)
>>> foo
{'a': 1, 'b': 2}
>>> goo = dict(c=3,**foo)
>>> goo
{'c': 3, 'a': 1, 'b': 2}
Для восстановления словаря можно использовать конструктор словаря и неявное расширение. Более того, интересно, что этот метод можно использовать для управления позиционным порядком при построении словаря ( post Python 3.6 ). на самом деле порядок вставки гарантирован для Python 3.7 и выше!
>>> foo = dict(a=1,b=2,c=3,d=4)
>>> new_dict = {k: v for k, v in list(foo.items())[:2]}
>>> new_dict
{'a': 1, 'b': 2}
>>> new_dict.update(newvalue=99)
>>> new_dict
{'a': 1, 'b': 2, 'newvalue': 99}
>>> new_dict.update({k: v for k, v in list(foo.items())[2:]})
>>> new_dict
{'a': 1, 'b': 2, 'newvalue': 99, 'c': 3, 'd': 4}
>>>
Вышеизложенное относится к использованию словарного понимания.
Поделиться
ingyhere
19 ноября 2019 в 04:57
3
во-первых, чтобы проверить, существует ли ключ уже
a={1:2,3:4}
a.get(1)
2
a.get(5)
None
затем вы можете добавить новый ключ и значение
Поделиться
Agus Mathew
25 марта 2019 в 13:01
1
добавьте ключ словаря, класс значения.
class myDict(dict):
def __init__(self):
self = dict()
def add(self, key, value):
#self[key] = value # add new key and value overwriting any exiting same key
if self.get(key)!=None:
print('key', key, 'already used') # report if key already used
self.setdefault(key, value) # if key exit do nothing
## example
myd = myDict()
name = "fred"
myd.add('apples',6)
print('\n', myd)
myd.add('bananas',3)
print('\n', myd)
myd.add('jack', 7)
print('\n', myd)
myd.add(name, myd)
print('\n', myd)
myd.add('apples', 23)
print('\n', myd)
myd.add(name, 2)
print(myd)
Поделиться
Susan
04 февраля 2020 в 01:47
Похожие вопросы:
Python ключи словарь в новый словарь
У меня есть словарь и набор следующим образом: fundprices = { ‘A’ : 20, ‘B’ : 20, ‘C’ : 10, ‘D’ : 15, ‘E’ : 10, ‘F’ : 15, ‘G’ : 35, ‘H’ : 20, ‘I’ : 10, ‘J’ : 5 } dollaramount = { 100000.0, 100000.0,…
Как я могу изменить ключи в словаре на верхний регистр и добавить значения одного и того же ключа в результирующий словарь?
У меня есть словарь, который выглядит так: d = {‘A’:110, ‘a’:100, ‘T’:50, ‘t’:5} Я хочу изменить клавиши на верхний регистр, объединить A+a и T+t и добавить их значения, чтобы результирующий словарь…
Java-свойства: добавить новые ключи в файл свойств во время выполнения?
Можно ли создать новый файл свойств и добавить ключи и значения во время выполнения? Я хочу добавить новые ключи в файл свойств в зависимости от ввода пользователя при установке моего приложения. Я…
как добавить дубликаты ключей в словарь <string,string>
как добавить дубликаты ключей в словарь то есть я уже добавил пару ключ-значение как rollno,1 ,но мне нужно добавить тот же параметр в словарь,но он не позволяет добавить. как добавить дублированные…
Ansible — как продолжать добавлять новые ключи в словарь при использовании модуля set_fact с with_items?
Я хочу добавить ключи в словарь при использовании set_fact с with_items. Это небольшой POC, который поможет мне завершить некоторую другую работу. Я попытался обобщить POC, чтобы удалить из него все…
Установить новые ключи в словарь
У меня есть словарь python. A=[0:’dog’,1:’cat’,3:’fly’,4,’fish’,6:’lizard’] Я хочу сбросить ключи в соответствии с range(len(A)) (естественным приращением), которое должно выглядеть следующим…
Как добавить новые сведения в словарь с помощью пользовательского ввода через CMD
Я новичок в программировании Python и создал метод, позволяющий принимать новое имя студента и новую оценку в существующий словарь с помощью пользовательского ввода от cmd, но мне трудно сортировать…
Как добавить новые значения в существующий словарь в python
Я пытаюсь создать словарь python, который имеет коллекцию Ключей с несколькими значениями для каждого ключа. Я хочу иметь возможность добавлять значения к существующему ключу в словаре. Я просмотрел…
Как я могу передать новые ключи в команде eb init
Я запускаю эту команду, и она запрашивает ключ доступа и секретный ключ доступа. eb init -p python-3.7 -r us-east-2 barebone-flask-rest-api но я получил ошибку — User: is not authorized to perform:…
Как добавить новые ключи и значения в существующую таблицу hash в R?
Используя пакет hash в R, я создал таблицу hast с ключами и значениями. Я хочу добавить новые ключи и значения в существующую хэш-таблицу. Есть ли какой-нибудь способ? Предполагать ht <-…
Сортировка словаря | Python
На самом деле содержимое словаря отсортировать нельзя, так как словарь в Python — это неупорядоченная структура данных. Даже если вы будете добавлять в словарь элементы упорядоченно, например по алфавиту, при выводе они могут отобразится по-другому.
Однако при извлечении элементов из словаря можно сделать так, чтобы это происходило согласно определенному порядку. Для этого дополнительно используется упорядоченная структура, которую можно отсортировать. Например, список.
Сортировка по ключам
Проще всего выполнить сортировку словаря по ключам. Алгоритм вывода содержимого словаря:
- Создать список ключей словаря.
- Отсортировать его.
- В цикле for перебрать элементы списка, используя элемент списка как ключ словаря.
>>> d = {'a': 10, 'b': 15, 'c': 4} >>> list_keys = list(d.keys()) >>> list_keys.sort() >>> for i in list_keys: ... print(i, ':', d[i]) ... a : 10 b : 15 c : 4
Сортировка по значениям
Отсортировать словарь по значениям сложнее, так как обращаться к элементам словаря можно только по ключам. Однако можно создать список кортежей («ключ», «значение») и отсортировать его по вторым элементам пар. Далее в программе используется именно данная упорядоченная структура, а не сам оригинальный словарь.
>>> d = {'a': 10, 'b': 15, 'c': 4} >>> list_d = list(d.items()) >>> list_d [('a', 10), ('b', 15), ('c', 4)] >>> list_d.sort(key=lambda i: i[1]) >>> list_d [('c', 4), ('a', 10), ('b', 15)] >>> for i in list_d: ... print(i[0], ':', i[1]) ... c : 4 a : 10 b : 15
Если бы мы использовали метод sort() без параметра key, то сортировка была бы выполнена по первым элементам кортежей. В качестве значения для key указывается функция. В данном случае используется lambda-функция, что уменьшает объем кода. В функцию передаются кортежи, а возвращаются их вторые элементы, по которым происходит сортировка.
Класс OrderedDict модуля collections
В модуле collections имеется класс OrderedDict, который является подклассом класса dict, то есть обычного встроенного в Python словаря. OrderedDict позволяет создавать объекты-словари, которые помнят порядок своих элементов. Также класс имеет ряд методов, которые могут изменять порядок элементов в словаре.
>>> from collections import OrderedDict >>> a = OrderedDict({1: 10, 0: 5}) >>> a OrderedDict([(1, 10), (0, 5)]) >>> a[2] = 20 >>> a OrderedDict([(1, 10), (0, 5), (2, 20)]) >>> for i in a: ... print(i, ':', a[i]) ... 1 : 10 0 : 5 2 : 20
ключи и значения, методы, функции
От автора: словари являются еще одним примером структуры данных. Словарь используется для сопоставления или связывания вещей, которые вы хотите хранить с ключами, необходимыми для их получения. Словарь в Python похож на словарь в реальном мире.
Словарь Python определяется двумя элементами: ключами и значениями.
Ключи представлены одним элементом
Значения могут быть списком или списком в списке, числами и т. д.
В этом руководстве мы рассмотрим:
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Получить курс
Методы словаря Python
Копирование словаря
Обновление словаря
Удаление ключей из словаря
Метод словаря items()
Сортировку словаря
Встроенные функции словаря
Метод словаря len()
Типы переменных
Метод списка Python cmp()
Str(dict)
Синтаксис для словаря Python:
Dict = { ‘ Tim’: 18, xyz,.. }
Dict = { ‘ Tim’: 18, xyz,.. } |
Словарь указан в фигурных скобках, внутри этих фигурных скобок объявляются ключи и значения. Каждый ключ отделяется от своего значения двоеточием (:), а каждый элемент — запятыми.
Свойства ключей словаря
При использовании ключей словаря есть два важных момента.
Не допускается более одной записи для каждого ключа (дубликат ключа не допускается)
Значения в словаре могут быть любого типа, в то время как ключи должны быть неизменяемыми, числа, кортежи или строки.
Ключи словаря чувствительны к регистру. То же имя ключа, но с другим регистром в словарях Python рассматривается как разные ключи.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print (Dict[‘Tiffany’])
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print (Dict[‘Tiffany’]) |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print((Dict[‘Tiffany’]))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print((Dict[‘Tiffany’])) |
В коде у нас есть словарь с названием «Dict»
Мы объявили в словаре имя и возраст человека, где имя — «ключи», а возраст — «значение».
Теперь запустите код
Он возвращает из словаря возраст Тиффани.
Методы словаря Python
Копирование словаря
Вы также можете скопировать весь словарь в новый словарь. Например, здесь мы скопировали наш оригинальный словарь в новые словари «Boys» и «Girls».
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
studentX=Boys.copy()
studentY=Girls.copy()
print studentX
print studentY
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} studentX=Boys.copy() studentY=Girls.copy() print studentX print studentY |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
studentX=Boys.copy()
studentY=Girls.copy()
print(studentX)
print(studentY)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} studentX=Boys.copy() studentY=Girls.copy() print(studentX) print(studentY) |
У нас есть оригинальный словарь (Dict) с именем и возрастом мальчиков и девочек вместе
Но мы хотим, чтобы список мальчиков отличался от списка девочек, поэтому мы определили элемент для мальчиков и девочек в отдельных словарях «Boys» и «Girls».
Теперь мы снова создали новые словари с именами «studentX» и «studentY», где все ключи и значения словаря Boys копируются в studentX, а словаря Girls — в studentY
Так что теперь вам не нужно просматривать весь список в главном словаре (Dict), чтобы узнать, кто является мальчиком, а кто девочкой, вам просто нужно вывести studentX, если вам нужен список мальчиков, и StudentY, если вам нужен список девочек
Итак, когда вы запустите словарь studentX и studentY, он выдаст все элементы, присутствующие в словаре «boys» и «girls» отдельно
Обновление словаря
Вы также можете обновить словарь, добавив новую запись или пару ключ-значение в существующую запись или удалив существующую запись. Здесь в примере мы добавим другое имя «Sarah» в наш существующий словарь.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Dict.update({«Sarah»:9})
print Dict
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Dict.update({«Sarah»:9}) print Dict |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Dict.update({«Sarah»:9})
print(Dict)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Dict.update({«Sarah»:9}) print(Dict) |
Наш существующий словарь «Dict» не содержит имени «Sarah».
Мы используем метод Dict.update, чтобы добавить его в существующий словарь
Теперь запустите код, он добавляет «Sarah» в существующий словарь
Удаление ключей из словаря
Словарь Python дает вам возможность удалить любой элемент из списка словаря. Предположим, вы не хотите, чтобы имя Charlie присутствовало в списке, поэтому вы можете удалить ключевой элемент с помощью следующего кода.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
del Dict [‘Charlie’]
print Dict
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} del Dict [‘Charlie’] print Dict |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
del Dict [‘Charlie’]
print(Dict)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} del Dict [‘Charlie’] print(Dict) |
Когда вы запускаете этот код, он должен вывести список словаря без Charlie.
Мы использовали код Del Dict
Когда код выполнен, он удалил Charlie из основного словаря
Метод словаря items()
Метод items() возвращает список пар кортежей (ключи, значения) в словаре.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print «Students Name: %s» % Dict.items()
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print «Students Name: %s» % Dict.items() |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print(«Students Name: %s» % list(Dict.items()))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print(«Students Name: %s» % list(Dict.items())) |
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Получить курс
Мы используем метод items() для Dict.
Когда код был выполнен, он возвращает список элементов (ключей и значений) из словаря
Проверка, существует ли данный ключ в словаре
Для данного списка вы также можете проверить, существует ли дочерний словарь в главном словаре или нет. Здесь у нас есть два под-словаря «Boys» и «Girls», мы хотим проверить, существует ли словарь «Boys» в нашем основном «Dict» или нет. Для этого мы используем метод forloop с методом else if.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
for key in Dict.keys():
if key in Boys.keys():
print True
else:
print False
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} for key in Dict.keys(): if key in Boys.keys(): print True else: print False |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
for key in list(Dict.keys()):
if key in list(Boys.keys()):
print(True)
else:
print(False)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} for key in list(Dict.keys()): if key in list(Boys.keys()): print(True) else: print(False) |
Forloop в коде проверяет каждый ключ в главном словаре для ключей Boys
Если он существует в главном словаре, он должен вывести true, иначе он должен вывести false
Когда вы выполните код, он выведет «True» три раза, так как мы получили три элемента в словаре «Boys»
Таким образом, это означает, что «Boys» существуют в главном словаре (Dict)
Сортировка словаря
В словаре вы также можете отсортировать элементы. Например, если мы хотим вывести название элементов словаря в алфавитном порядке, нам нужно использовать forloop. Это отсортирует каждый элемент словаря соответственно.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
Students = Dict.keys()
Students.sort()
for S in Students:
print»:».join((S,str(Dict[S])))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} Students = Dict.keys() Students.sort() for S in Students: print»:».join((S,str(Dict[S]))) |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
Students = list(Dict.keys())
Students.sort()
for S in Students:
print(«:».join((S,str(Dict[S]))))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} Students = list(Dict.keys()) Students.sort() for S in Students: print(«:».join((S,str(Dict[S])))) |
Мы объявили переменную Students для словаря «Dict».
Затем мы используем код Students.sort, который сортирует элемент внутри словаря.
Но чтобы отсортировать каждый элемент в словаре, мы запускаем forloop, объявив переменную S
Теперь, когда мы выполним код, forloop вызывает каждый элемент из словаря и выводит строку и значение
Встроенные функции словаря Python
Метод словаря len()
Функция len() выдает количество пар в словаре.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print «Length : %d» % len (Dict)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print «Length : %d» % len (Dict) |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print(«Length : %d» % len (Dict))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print(«Length : %d» % len (Dict)) |
Когда выполняется функция len(Dict), она выдает значение «4», так как в нашем словаре есть четыре элемента.
Типы переменных
Python не требует явного объявления резервного пространства памяти; это происходит автоматически. Используются присвоения значения переменной «=», знак равенства. Код для определения типа переменной — «%type (Dict)».
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print «variable Type: %s» %type (Dict)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print «variable Type: %s» %type (Dict) |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print(«variable Type: %s» %type (Dict))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print(«variable Type: %s» %type (Dict)) |
Используем код %type, чтобы узнать тип переменной
Когда код был выполнен, он указывает, что тип переменной — это словарь
Метод списка Python cmp()
Метод сравнения cmp() используется в Python для сравнения значений и ключей двух словарей. Если метод возвращает 0, оба словаря равны, если 1 — dic1>dict2, и если -1 — dict1
Пример Python 2
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25}
Girls = {‘Tiffany’:22}
print cmp(Girls, Boys)
Boys = {‘Tim’: 18,’Charlie’:12,’Robert’:25} Girls = {‘Tiffany’:22} print cmp(Girls, Boys) |
Пример Python 3
cmp is not supported in Python 3
cmp is not supported in Python 3 |
У нас есть два словаря названия «Boys» и «Girls».
То, что вы сначала объявите в коде «cmp (Girls, Boys)», будет рассматриваться как словарь 1. В нашем случае мы сначала объявили «Girls», поэтому он будет рассматриваться как словарь 1, а «Boys» — как словарь 2.
Когда выполняется код, он выводит -1, это означает, что наш словарь 1 меньше словаря 2.
Str(dict)
С помощью метода Str() вы можете преобразовать словарь в печатный формат строки.
Пример Python 2
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print «printable string:%s» % str (Dict)
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print «printable string:%s» % str (Dict) |
Пример Python 3
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25}
print(«printable string:%s» % str (Dict))
Dict = {‘Tim’: 18,’Charlie’:12,’Tiffany’:22,’Robert’:25} print(«printable string:%s» % str (Dict)) |
Используем код %str (Dict)
Он вернет элементы словаря в формате строки для печати
Вот список всех методов словаря
copy() — Копирует весь словарь в новый словарь
update() — Обновляет словарь, добавив новую запись или пару ключ-значение к существующей записи или удалив существующую запись.
items() — Возвращает список пар кортежей (Ключи, Значение) в словаре.
sort() — Вы можете отсортировать элементы
len() — Дает количество пар в словаре.
cmp() — Сравнивает значения и ключи двух словарей
Str() — Создает словарь в формате для печати строки
Заключение
Словари в языке программирования — это тип структуры данных, используемый для хранения информации, связанной каким-либо образом. Словарь Python определяется двумя элементами: ключами и значениями. Словари не хранят информацию в каком-либо определенном порядке, поэтому вы не можете вернуть свою информацию в том же порядке, в котором вы ее ввели.
Ключи представлены одним элементом
Значения могут быть списком или списком в списке, числами и т. д.
Не допускается более одной записи для каждого ключа (дубликат ключа не допускается)
Значения в словаре могут быть любого типа, в то время как ключи должны быть неизменяемыми: числа, кортежи или строки.
Ключи словаря чувствительны к регистру. То же имя ключа, но с другим регистром в словарях Python рассматривается как разные ключи.
Источник: //www.guru99.com
Редакция: Команда webformyself.
Бесплатный курс «Python. Быстрый старт»
Получите курс и узнайте, как создать программу для перевода текстов на Python
Получить курс
словарей на Python — Real Python
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Словари на Python
Python предоставляет другой составной тип данных, называемый словарем , который похож на список в том смысле, что он представляет собой набор объектов.
Вот что вы узнаете из этого руководства: Вы расскажете об основных характеристиках словарей Python и узнаете, как получить доступ к данным словаря и управлять ими.После того, как вы закончите это руководство, вы должны хорошо понимать, когда словарь является подходящим типом данных для использования, и как это сделать.
Словари и списки имеют следующие характеристики:
- Оба являются изменяемыми.
- Оба динамические. Они могут увеличиваться и уменьшаться по мере необходимости.
- Оба могут быть вложенными. Список может содержать другой список. Словарь может содержать другой словарь. Словарь также может содержать список, и наоборот.
Словари отличаются от списков в первую очередь способом доступа к элементам:
- Доступ к элементам списка осуществляется по их положению в списке посредством индексации.
- Доступ к элементам словаря осуществляется с помощью клавиш.
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Словари Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Определение словаря
Словари
— это реализация Python структуры данных, более известной как ассоциативный массив. Словарь состоит из набора пар ключ-значение.Каждая пара «ключ-значение» сопоставляет ключ с соответствующим значением.
Словарь можно определить, заключив список пар ключ-значение, разделенных запятыми, в фигурные скобки ( {}
). Двоеточие (:
) отделяет каждый ключ от связанного с ним значения:
d = {
<ключ>: <значение>,
<ключ>: <значение>,
.
.
.
<ключ>: <значение>
}
Ниже приводится определение словаря, который сопоставляет местоположение с названием соответствующей команды Высшей бейсбольной лиги:
>>>
>>> MLB_team = {
... 'Colorado': 'Скалистые горы',
... 'Boston': 'Red Sox',
... 'Миннесота': 'Близнецы',
... 'Milwaukee': 'пивовары',
... "Сиэтл": "Моряки"
...}
Отображение местоположения словаря в MLB Team
Вы также можете создать словарь с помощью встроенной функции dict ()
. Аргумент для dict ()
должен быть последовательностью пар ключ-значение. Для этого хорошо подходит список кортежей:
d = dict ([
(<ключ>, <значение>),
(<ключ>, <значение),
..
.
(<ключ>, <значение>)
])
MLB_team
может быть определен следующим образом:
>>>
>>> MLB_team = dict ([
... ('Колорадо', 'Скалистые горы'),
... ('Бостон', 'Рэд Сокс'),
... ('Миннесота', 'Близнецы'),
... ("Милуоки", "Брюэрс"),
... ("Сиэтл", "Моряки")
...])
Если значения ключа являются простыми строками, их можно указать как аргументы ключевого слова. Итак, вот еще один способ определить MLB_team
:
>>>
>>> MLB_team = dict (
... Colorado = 'Скалистые горы',
... Бостон = 'Red Sox',
... Миннесота = 'Близнецы',
... Милуоки = 'Пивовары',
... Сиэтл = 'Моряки'
...)
После того, как вы определили словарь, вы можете отобразить его содержимое так же, как вы можете сделать это для списка. Все три определения, показанные выше, при отображении выглядят следующим образом:
>>>
>>> тип (MLB_team)
<класс 'dict'>
>>> MLB_team
{"Колорадо": "Скалистые горы", "Бостон": "Ред Сокс", "Миннесота": "Близнецы",
Milwaukee: пивоварни, Сиэтл: моряки}
Записи в словаре отображаются в том порядке, в котором они были определены.Но когда дело доходит до их получения, это не имеет значения. Элементы словаря не доступны по числовому индексу:
>>>
>>> MLB_team [1]
Отслеживание (последний вызов последний):
Файл "", строка 1, в
MLB_team [1]
KeyError: 1
Доступ к значениям словаря
Конечно, элементы словаря должны быть как-то доступны. Если вы не получите их по индексу, то как их получить?
Значение извлекается из словаря путем указания соответствующего ключа в квадратных скобках ( []
):
>>>
>>> MLB_team ['Миннесота']
'Двойняшки'
>>> MLB_team ['Колорадо']
'Скалистые горы'
Если вы ссылаетесь на ключ, которого нет в словаре, Python вызывает исключение:
>>>
>>> MLB_team ['Торонто']
Отслеживание (последний вызов последний):
Файл "", строка 1, в
MLB_team ['Торонто']
KeyError: "Торонто"
Добавление записи в существующий словарь — это просто вопрос назначения нового ключа и значения:
>>>
>>> MLB_team ['Kansas City'] = 'Royals'
>>> MLB_team
{"Колорадо": "Скалистые горы", "Бостон": "Ред Сокс", "Миннесота": "Близнецы",
Milwaukee: Brewers, Seattle: Mariners, Kansas City: Royals}
Если вы хотите обновить запись, вы можете просто присвоить новое значение существующему ключу:
>>>
>>> MLB_team ['Сиэтл'] = 'Сихокс'
>>> MLB_team
{"Колорадо": "Скалистые горы", "Бостон": "Ред Сокс", "Миннесота": "Близнецы",
«Милуоки»: «Пивовары», «Сиэтл»: «Сихокс», «Канзас-Сити»: «Роялс»}
Чтобы удалить запись, используйте оператор del
, указав ключ для удаления:
>>>
>>> del MLB_team ['Сиэтл']
>>> MLB_team
{"Колорадо": "Скалистые горы", "Бостон": "Ред Сокс", "Миннесота": "Близнецы",
"Milwaukee": "Brewers", "Kansas City": "Royals"}
Беги, Сихокс! Ты команда НФЛ.
Ключи словаря и индексы списка
Вы могли заметить, что интерпретатор вызывает то же исключение, KeyError
, когда доступ к словарю осуществляется либо с неопределенным ключом, либо по числовому индексу:
>>>
>>> MLB_team ['Торонто']
Отслеживание (последний вызов последний):
Файл "", строка 1, в
MLB_team ['Торонто']
KeyError: "Торонто"
>>> MLB_team [1]
Отслеживание (последний вызов последний):
Файл "", строка 1, в
MLB_team [1]
KeyError: 1
По сути, это та же ошибка.В последнем случае [1]
выглядит как числовой индекс, но это не так.
Позже в этом руководстве вы увидите, что объект любого неизменяемого типа может использоваться как ключ словаря. Соответственно, нет причин, по которым вы не можете использовать целые числа:
>>>
>>> d = {0: 'a', 1: 'b', 2: 'c', 3: 'd'}
>>> d
{0: 'a', 1: 'b', 2: 'c', 3: 'd'}
>>> d [0]
'а'
>>> d [2]
'c'
В выражениях MLB_team [1]
, d [0]
и d [2]
числа в квадратных скобках выглядят так, как если бы они могли быть индексами.Но они не имеют ничего общего с порядком пунктов в словаре. Python интерпретирует их как ключи словаря. Если вы определите этот же словарь в обратном порядке, вы все равно получите те же значения, используя те же ключи:
>>>
>>> d = {3: 'd', 2: 'c', 1: 'b', 0: 'a'}
>>> d
{3: 'd', 2: 'c', 1: 'b', 0: 'a'}
>>> d [0]
'а'
>>> d [2]
'c'
Синтаксис может выглядеть примерно так, но словарь нельзя рассматривать как список:
>>>
>>> тип (г)
<класс 'dict'>
>>> d [-1]
Отслеживание (последний вызов последний):
Файл "", строка 1, в
d [-1]
KeyError: -1
>>> d [0: 2]
Отслеживание (последний вызов последний):
Файл "", строка 1, в
d [0: 2]
TypeError: нехешируемый тип: 'срез'
>>> d.добавить ('е')
Отслеживание (последний вызов последний):
Файл "", строка 1, в
d.append ('е')
AttributeError: объект 'dict' не имеет атрибута 'append'
Примечание: Хотя доступ к элементам в словаре не зависит от порядка, Python гарантирует, что порядок элементов в словаре сохраняется. При отображении элементы будут отображаться в том порядке, в котором они были определены, и итерация по ключам также будет происходить в этом порядке. Элементы, добавленные в словарь, добавляются в конце.Если элементы удаляются, порядок оставшихся элементов сохраняется.
Вы можете рассчитывать на сохранение порядка совсем недавно. Он был добавлен как часть спецификации языка Python в версии 3.7. Однако это было верно и для версии 3.6 — случайно в результате реализации, но не гарантировано спецификацией языка.
Постепенное создание словаря
Определение словаря с использованием фигурных скобок и списка пар ключ-значение, как показано выше, нормально, если вы заранее знаете все ключи и значения.Но что, если вы хотите создать словарь на лету?
Вы можете начать с создания пустого словаря, который определяется пустыми фигурными скобками. Затем вы можете добавлять новые ключи и значения по одному:
>>>
>>> человек = {}
>>> тип (человек)
<класс 'dict'>
>>> person ['fname'] = 'Джо'
>>> person ['lname'] = 'Fonebone'
>>> person ['age'] = 51
>>> person ['spouse'] = 'Эдна'
>>> person ['children'] = ['Ральф', 'Бетти', 'Джоуи']
>>> person ['pets'] = {'dog': 'Fido', 'cat': 'Sox'}
Когда словарь создан таким образом, доступ к его значениям осуществляется так же, как и к любому другому словарю:
>>>
>>> человек
{'fname': 'Joe', 'lname': 'Fonebone', 'age': 51, 'spouse': 'Edna',
'children': ['Ralph', 'Betty', 'Joey'], 'pets': {'dog': 'Fido', 'cat': 'Sox'}}
>>> человек ['имя']
'Джо'
>>> человек ['возраст']
51
>>> человек ['дети']
[«Ральф», «Бетти», «Джоуи»]
Для получения значений из вложенного списка или вложенного словаря требуется дополнительный индекс или ключ:
>>>
>>> человек ['дети'] [- 1]
'Джоуи'
>>> человек ['домашние животные'] ['кошка']
'Sox'
В этом примере демонстрируется еще одна особенность словарей: значения, содержащиеся в словаре, не обязательно должны быть одного типа.В человек
некоторые значения являются строками, одно — целым числом, одно — списком, а третье — другим словарем.
Точно так же, как значения в словаре не обязательно должны быть одного типа, ключи не должны быть:
>>>
>>> foo = {42: 'aaa', 2.78: 'bbb', True: 'ccc'}
>>> фу
{42: 'aaa', 2.78: 'bbb', True: 'ccc'}
>>> foo [42]
'ааа'
>>> foo [2.78]
'bbb'
>>> foo [Верно]
'ccc'
Здесь один из ключей — целое число, один — число с плавающей запятой, а третий — логическое.Неизвестно, насколько это может быть полезно, но никогда не знаешь.
Обратите внимание, насколько универсальны словари Python. В MLB_team
одна и та же информация (название бейсбольной команды) хранится для каждого из нескольких различных географических местоположений. человек
, с другой стороны, хранит различные типы данных для одного человека.
Вы можете использовать словари для самых разных целей, потому что существует очень мало ограничений на разрешенные ключи и значения.Но такие есть. Читай дальше!
Ограничения для ключей словаря
Практически любой тип значения может использоваться в качестве словарного ключа в Python. Вы только что видели этот пример, где в качестве ключей используются целочисленные, плавающие и логические объекты:
>>>
>>> foo = {42: 'aaa', 2.78: 'bbb', True: 'ccc'}
>>> фу
{42: 'aaa', 2.78: 'bbb', True: 'ccc'}
Вы даже можете использовать встроенные объекты, такие как типы и функции:
>>>
>>> d = {int: 1, float: 2, bool: 3}
>>> d
{<класс 'int'>: 1, <класс 'float'>: 2, <класс 'bool'>: 3}
>>> d [float]
2
>>> d = {bin: 1, hex: 2, oct: 3}
>>> d [окт]
3
Однако есть пара ограничений, которые должны соблюдаться ключами словаря.
Во-первых, данный ключ может появиться в словаре только один раз. Повторяющиеся ключи не допускаются. Словарь сопоставляет каждый ключ с соответствующим значением, поэтому нет смысла отображать конкретный ключ более одного раза.
Выше вы видели, что когда вы присваиваете значение уже существующему ключу словаря, он не добавляет ключ во второй раз, а заменяет существующее значение:
>>>
>>> MLB_team = {
... 'Colorado': 'Скалистые горы',
... 'Boston': 'Red Sox',
... 'Миннесота': 'Близнецы',
... 'Milwaukee': 'пивовары',
... "Сиэтл": "Моряки"
...}
>>> MLB_team ['Миннесота'] = 'Лесные волки'
>>> MLB_team
{"Колорадо": "Скалистые горы", "Бостон": "Ред Сокс", "Миннесота": "Тимбервулвз",
Milwaukee: пивоварни, Сиэтл: моряки}
Аналогично, если вы укажете ключ во второй раз во время первоначального создания словаря, второе вхождение заменит первое:
>>>
>>> MLB_team = {
... 'Colorado': 'Скалистые горы',
... 'Boston': 'Red Sox',
... 'Миннесота': 'Timberwolves',
... 'Milwaukee': 'пивовары',
... 'Сиэтл': 'Моряки',
... 'Миннесота': 'Близнецы'
...}
>>> MLB_team
{"Колорадо": "Скалистые горы", "Бостон": "Ред Сокс", "Миннесота": "Близнецы",
Milwaukee: пивоварни, Сиэтл: моряки}
Прочь, лесные волки! Ты команда НБА. Вроде, как бы, что-то вроде.
Во-вторых, ключ словаря должен иметь неизменяемый тип.Вы уже видели примеры, в которых несколько знакомых вам неизменяемых типов — integer, float, string и Boolean — служили ключами словаря.
Кортеж также может быть ключом словаря, поскольку кортежи неизменяемы:
>>>
>>> d = {(1, 1): 'a', (1, 2): 'b', (2, 1): 'c', (2, 2): 'd' }
>>> d [(1,1)]
'а'
>>> d [(2,1)]
'c'
(Вспомните из обсуждения кортежей, что одно из оснований для использования кортежа вместо списка состоит в том, что существуют обстоятельства, когда требуется неизменяемый тип.Это один из них.)
Однако ни список, ни другой словарь не могут служить ключом словаря, потому что списки и словари изменяемы:
>>>
>>> d = {[1, 1]: 'a', [1, 2]: 'b', [2, 1]: 'c', [2, 2]: 'd' }
Отслеживание (последний вызов последний):
Файл "", строка 1, в
d = {[1, 1]: 'a', [1, 2]: 'b', [2, 1]: 'c', [2, 2]: 'd'}
TypeError: нехешируемый тип: 'список'
Техническое примечание: Почему в сообщении об ошибке написано «нехэшируемое»?
Технически не совсем правильно говорить, что объект должен быть неизменным, чтобы его можно было использовать в качестве словарного ключа.Точнее, объект должен быть хешируемым, что означает, что он может быть передан хеш-функции. Хеш-функция принимает данные произвольного размера и сопоставляет их с относительно более простым значением фиксированного размера, называемым хеш-значением (или просто хешем), которое используется для поиска и сравнения в таблице.
Встроенная функция Python hash ()
возвращает хеш-значение для объекта, который может быть хеширован, и вызывает исключение для объекта, которого нет:
>>>
>>> hash ('foo')
11132615637596761
>>> хеш ([1, 2, 3])
Отслеживание (последний вызов последний):
Файл "", строка 1, в
TypeError: нехешируемый тип: 'список'
Все встроенные неизменяемые типы, о которых вы узнали до сих пор, являются хешируемыми, а изменяемые типы контейнеров (списки и словари) — нет.Итак, для настоящих целей вы можете думать о хэшируемом и неизменяемом как о более или менее синонимах.
В будущих уроках вы встретите изменяемые объекты, которые также могут быть хешированы.
Ограничения словарных значений
Напротив, нет ограничений на значения словаря. Буквально совсем нет. Значением словаря может быть любой тип объекта, поддерживаемый Python, включая изменяемые типы, такие как списки и словари, а также определяемые пользователем объекты, о которых вы узнаете в следующих руководствах.
Также нет ограничений на многократное появление определенного значения в словаре:
>>>
>>> d = {0: 'a', 1: 'a', 2: 'a', 3: 'a'}
>>> d
{0: 'а', 1: 'а', 2: 'а', 3: 'а'}
>>> d [0] == d [1] == d [2]
Истинный
Операторы и встроенные функции
Вы уже познакомились со многими операторами и встроенными функциями, которые можно использовать со строками, списками и кортежами. Некоторые из них также работают со словарями.
Например, в операторах
и не в
возвращают Истина
или Ложь
в зависимости от того, встречается ли указанный операнд как ключ в словаре:
>>>
>>> MLB_team = {
... 'Colorado': 'Скалистые горы',
... 'Boston': 'Red Sox',
... 'Миннесота': 'Близнецы',
... 'Milwaukee': 'пивовары',
... "Сиэтл": "Моряки"
...}
>>> 'Милуоки' в MLB_team
Истинный
>>> 'Торонто' в MLB_team
Ложь
>>> 'Торонто' нет в MLB_team
Истинный
Вы можете использовать оператор в
вместе с оценкой короткого замыкания, чтобы избежать появления ошибки при попытке доступа к ключу, которого нет в словаре:
>>>
>>> MLB_team ['Торонто']
Отслеживание (последний вызов последний):
Файл "", строка 1, в
MLB_team ['Торонто']
KeyError: "Торонто"
>>> 'Торонто' в MLB_team и MLB_team ['Торонто']
Ложь
Во втором случае из-за оценки короткого замыкания выражение MLB_team ['Toronto']
не оценивается, поэтому исключение KeyError
не возникает.
Функция len ()
возвращает количество пар ключ-значение в словаре:
>>>
>>> MLB_team = {
... 'Colorado': 'Скалистые горы',
... 'Boston': 'Red Sox',
... 'Миннесота': 'Близнецы',
... 'Milwaukee': 'пивовары',
... "Сиэтл": "Моряки"
...}
>>> len (MLB_team)
5
Методы встроенного словаря
Как и в случае со строками и списками, существует несколько встроенных методов, которые можно вызывать в словарях.Фактически, в некоторых случаях методы списка и словаря имеют одно и то же имя. (При обсуждении объектно-ориентированного программирования вы увидите, что для разных типов вполне приемлемо иметь методы с одинаковыми именами.)
Ниже приводится обзор методов, применяемых к словарям:
d.clear ()
Очищает словарь.
d.clear ()
очищает словарь d
всех пар ключ-значение:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d
{'a': 10, 'b': 20, 'c': 30}
>>> d.Чисто()
>>> d
{}
d.get (<ключ> [, <по умолчанию>])
Возвращает значение ключа, если он существует в словаре.
Словарь Python . Метод .get ()
обеспечивает удобный способ получения значения ключа из словаря без предварительной проверки того, существует ли ключ, и без возникновения ошибки.
d.get (<ключ>)
ищет в словаре d
<ключ>
и возвращает связанное значение, если оно найдено.Если <ключ>
не найден, возвращается Нет
:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> print (d.get ('b'))
20
>>> print (d.get ('z'))
Никто
Если <ключ>
не найден и указан необязательный аргумент <по умолчанию>
, это значение возвращается вместо Нет
:
>>>
>>> print (d.get ('z', -1))
-1
г.пункты ()
Возвращает список пар ключ-значение в словаре.
d.items ()
возвращает список кортежей, содержащих пары ключ-значение в d
. Первый элемент в каждом кортеже — это ключ, а второй элемент — значение ключа:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d
{'a': 10, 'b': 20, 'c': 30}
>>> список (d.items ())
[('a', 10), ('b', 20), ('c', 30)]
>>> список (d.items ()) [1] [0]
'b'
>>> список (д.предметы ()) [1] [1]
20
d.keys ()
Возвращает список ключей в словаре.
d.keys ()
возвращает список всех ключей в d
:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d
{'a': 10, 'b': 20, 'c': 30}
>>> список (d.keys ())
['a', 'b', 'c']
d.значения ()
Возвращает список значений в словаре.
г.values ()
возвращает список всех значений в d
:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d
{'a': 10, 'b': 20, 'c': 30}
>>> список (d.values ())
[10, 20, 30]
Любые повторяющиеся значения в d
будут возвращаться столько раз, сколько они встречаются:
>>>
>>> d = {'a': 10, 'b': 10, 'c': 10}
>>> d
{'a': 10, 'b': 10, 'c': 10}
>>> список (d.values ())
[10, 10, 10]
Техническое примечание: .Методы items ()
, .keys ()
и .values ()
фактически возвращают нечто, называемое объектом представления . Объект представления словаря более или менее похож на окно с ключами и значениями. Для практических целей вы можете рассматривать эти методы как возвращающие списки ключей и значений словаря.
d.pop (<ключ> [, <по умолчанию>])
Удаляет ключ из словаря, если он присутствует, и возвращает его значение.
Если <ключ>
присутствует в d
, d.pop (
удаляет
и возвращает связанное с ним значение:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d.pop ('Ъ')
20
>>> d
{'a': 10, 'c': 30}
d.pop (
вызывает исключение KeyError
, если
не находится в d
:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d.pop ('z')
Отслеживание (последний вызов последний):
Файл "", строка 1, в
d.поп ('z')
KeyError: 'z'
Если <ключ>
отсутствует в d
и указан необязательный аргумент <по умолчанию>
, то возвращается это значение, и исключение не возникает:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> d.pop ('z', -1)
-1
>>> d
{'a': 10, 'b': 20, 'c': 30}
д.попьем ()
Удаляет пару «ключ-значение» из словаря.
г.popitem ()
удаляет последнюю пару ключ-значение, добавленную из d
, и возвращает ее как кортеж:
>>>
>>> d = {'a': 10, 'b': 20, 'c': 30}
>>> д.попьем ()
('c', 30)
>>> d
{'a': 10, 'b': 20}
>>> д.попьем ()
('b', 20)
>>> d
{'a': 10}
Если d
пусто, d.poITEm ()
вызывает исключение KeyError
:
>>>
>>> d = {}
>>> д.попьем ()
Отслеживание (последний вызов последний):
Файл "", строка 1, в
d.popitem ()
KeyError: 'popitem (): словарь пуст'
d.update (
Объединяет словарь с другим словарем или с итерацией пар ключ-значение.
Если
— словарь, d.update (
объединяет записи из
в d
. Для каждого ключа в
:
- Если ключ отсутствует в
d
, пара ключ-значение изd
. - Если ключ уже присутствует в
d
, соответствующее значение вd
для этого ключа обновляется до значения из
Вот пример объединения двух словарей:
>>>
>>> d1 = {'a': 10, 'b': 20, 'c': 30}
>>> d2 = {'b': 200, 'd': 400}
>>> d1.update (d2)
>>> d1
{'a': 10, 'b': 200, 'c': 30, 'd': 400}
В этом примере ключ 'b'
уже существует в d1
, поэтому его значение обновляется до 200
, значение для этого ключа из d2
.Однако в d1
нет ключа 'd'
, поэтому эта пара ключ-значение добавляется из d2
.
также может быть последовательностью пар ключ-значение, аналогично тому, как функция dict ()
используется для определения словаря. Например,
можно указать как список кортежей:
>>>
>>> d1 = {'a': 10, 'b': 20, 'c': 30}
>>> d1.update ([('b', 200), ('d', 400)])
>>> d1
{'a': 10, 'b': 200, 'c': 30, 'd': 400}
Или значения для объединения можно указать в виде списка аргументов ключевого слова:
>>>
>>> d1 = {'a': 10, 'b': 20, 'c': 30}
>>> d1.обновление (b = 200, d = 400)
>>> d1
{'a': 10, 'b': 200, 'c': 30, 'd': 400}
Заключение
В этом руководстве вы рассмотрели основные свойства словаря Python и узнали, как получить доступ и управлять данными словаря.
Списки и словарей — два наиболее часто используемых типа Python. Как вы видели, они имеют несколько общих черт, но различаются способом доступа к их элементам. Доступ к элементам списков осуществляется по числовому индексу в зависимости от порядка, а к элементам словаря осуществляется доступ с помощью клавиши
.
Из-за этой разницы списки и словари подходят для разных ситуаций.Теперь вы должны хорошо почувствовать, что лучше всего подходит для данной ситуации.
Далее вы узнаете о наборах Python . Набор — это еще один составной тип данных, но он сильно отличается от списка или словаря.
Пройдите тест: Проверьте свои знания с помощью нашей интерактивной викторины «Словари Python». По завершении вы получите балл, чтобы вы могли отслеживать свой прогресс в обучении с течением времени:
Пройти тест »
Смотреть сейчас Это руководство содержит соответствующий видеокурс, созданный командой Real Python.Посмотрите его вместе с письменным руководством, чтобы углубить свое понимание: Словари на Python
Python Dictionary — GeeksforGeeks
Dictionary в Python — это неупорядоченный набор значений данных, используемый для хранения значений данных, таких как карта, которая, в отличие от других типов данных, которые содержат только одно значение в качестве элемента, Dictionary содержит ключ: значение
пара. Ключевое значение предоставлено в словаре, чтобы сделать его более оптимизированным.
Примечание. Ключи в словаре не допускают полиморфизма.
Создание словаря
В Python словарь можно создать, поместив последовательность элементов в фигурные скобки {} , разделенные запятой. Словарь содержит пару значений, одно из которых является ключом, а другой соответствующий элемент пары — его Ключ: значение
. Значения в словаре могут иметь любой тип данных и могут дублироваться, тогда как ключи не могут повторяться и должны быть неизменными .
Примечание — Ключи словаря чувствительны к регистру, одно и то же имя, но разные регистры ключа будут обрабатываться отдельно.
|
Выход:
Словарь с использованием целочисленных ключей: {1: "Гики", 2: "Для", 3: "Гики"} Словарь с использованием смешанных клавиш: {1: [1, 2, 3, 4], 'Имя': 'Гики'}
Словарь также можно создать с помощью встроенной функции dict ().Пустой словарь можно создать, просто поместив его в фигурные скобки {}.
0) |
Выход:
Пустой словарь: {} Словарь с использованием dict (): {1: "Гики", 2: "Для", 3: "Гики"} Словарь с каждым элементом в паре: {1: "Компьютерщики", 2: "Для"}
Вложенный словарь:
|
Выход:
', 1:' Gee 2: 'For', 3: {'A': 'Welcome', 'B': 'To', 'C': 'Geeks'}}
Добавление элементов в словарь
В словаре Python, Добавление элементов можно сделать несколькими способами.В Словарь можно добавлять по одному значению за раз, определяя значение вместе с ключом, например. Dict [Key] = «Значение». Обновление существующего значения в Словаре можно выполнить с помощью встроенного метода update ()
. Вложенные значения ключей также могут быть добавлены в существующий Словарь.
Примечание — При добавлении значения, если значение ключа уже существует, значение обновляется, в противном случае в Словарь добавляется новый ключ со значением.
0) |
Выход:
Пустой словарь: {} Словарь после добавления 3-х элементов: {0: "Компьютерщики", 2: "Для", 3: 1} Словарь после добавления 3-х элементов: {0: "Компьютерщики", 2: "Для", 3: 1, "Набор_значений": (2, 3, 4)} Обновлено значение ключа: {0: "Компьютерщики", 2: "Добро пожаловать", 3: 1, "Набор_значений": (2, 3, 4)} Добавление вложенного ключа: {0: 'Компьютерщики', 2: 'Добро пожаловать', 3: 1, 5: {'Вложенные': {'1': 'Жизнь', '2': 'Компьютерщики'}}, 'Value_set': (2, 3, 4)}
Доступ к элементам из словаря
Чтобы получить доступ к элементам словаря, обратитесь к его ключевому имени.Ключ можно использовать в квадратных скобках.
|
Выход:
Доступ к элементу с помощью ключа: За Доступ к элементу с помощью ключа: Компьютерщики
Существует также метод get () , который также поможет получить доступ к элементу из словаря.
|
Выход:
Доступ к элементу с помощью get: Компьютерщики
Доступ к элементу вложенного словаря
Чтобы получить доступ к значению любого ключа во вложенном словаре, используйте синтаксис indexing [].
|
Выход:
{1: "Компьютерщики"} Компьютерщики За
Удаление элементов из словаря
Использование ключевого слова
del
В Словаре Python удаление ключей может быть выполнено с помощью ключевого слова del
.Используя ключевое слово del, можно удалить определенные значения из словаря, а также весь словарь. Элементы во вложенном словаре также можно удалить, используя ключевое слово del и указав конкретный вложенный ключ и конкретный ключ для удаления из этого вложенного словаря.
Note- del Dict
удалит весь словарь и, следовательно, его печать после удаления вызовет ошибку.
9 0002 |
Вывод:
Исходный словарь: {'A': {1: "Гики", 2: "Для", 3: "Гики"}, "B": {1: "Гики", 2: "Жизнь"}, 5: "Добро пожаловать", 6 : 'To', 7: 'Geeks'} Удаление определенного ключа: {'A': {1: "Гики", 2: "Для", 3: "Гики"}, "B": {1: "Гики", 2: "Жизнь"}, 5: "Добро пожаловать", 7 : 'Geeks'} Удаление ключа из вложенного словаря: {'A': {1: "Гики", 3: "Гики"}, "B": {1: "Гики", 2: "Жизнь"}, 5: "Добро пожаловать", 7: "Гики"}
Использование метода
pop ()
Метод Pop ()
используется для возврата и удаления значения указанного ключа.
|
Выход:
Словарь после удаления: {3: 'Компьютерщики', 'имя': 'Для'} Значение, связанное с всплывающей клавишей: Компьютерщики
Использование метода
popitem ()
Popitem () возвращает и удаляет произвольную пару элементов (ключ, значение) из словаря.
|
Выход:
Словарь после удаления: {3: 'Компьютерщики', 'имя': 'Для'} Возвращаемая произвольная пара: (1, 'Geeks')
Использование метода
clear ()
Все элементы из словаря могут быть удалены сразу с помощью метода clear ()
.
|
Выход:
Удаление всего словаря: {}
Методы словаря
Методы | Описание | ||||
---|---|---|---|---|---|
copy () | Они метод copy () возвращает неглубокую копию словаря. | ||||
clear () | Метод clear () удаляет все элементы из словаря. | pop () | Удаляет и возвращает элемент из словаря, имеющий данный ключ. | popitem () | Удаляет произвольную пару ключ-значение из словаря и возвращает ее как кортеж. |
get () | Это традиционный метод доступа к значению ключа. | ||||
dictionary_name.values () | возвращает список всех значений, доступных в данном словаре. | ||||
str () | Производит печатаемое строковое представление словаря. | ||||
update () | Добавляет пары ключей и значений словаря dict2 в dict | ||||
setdefault () | Set dict [key] = default, если ключ еще не находится в dict | ||||
keys () | Возвращает список ключей словаря dict | ||||
items () | Возвращает список пар кортежей dict (ключ, значение) | ||||
has_key () | Возвращает true, если ключ в словаре dict, и false в противном случае | ||||
fromkeys () | Создайте новый словарь с ключами из seq и значениями, установленными в значение. | ||||
type () | Возвращает тип переданной переменной. | ||||
cmp () | Сравнивает элементы обоих dict. |
Последние статьи по словарю Python
Дополнительные видео по словарю Python:
Набор словарей Python 2
Набор словарей Python 3
Программы словаря
Полезные ссылки для добавления пары ключ / значение
Словарь - один из важных типов данных, доступных в Python.Данные в словаре хранятся в виде пары ключ / значение. Он разделяется двоеточием (:), а пара ключ / значение разделяется запятой (,).
Ключи в словаре уникальны и могут быть строкой, целым числом, кортежем и т. Д. Значения могут быть списком или списком в списке, числами, строкой и т. Д.
Вот пример словаря:
my_dict = {"a": A, "b": B, "c": C, "d": D}
В этом руководстве по Python вы узнаете:
Ограничения на ключевые словари
Вот список ограничений на ключ в словаре:
- Если в словаре определен повторяющийся ключ, последний считается .Например, рассмотрим словарь my_dict = {"Name": "ABC", "Address": "Mumbai", "Age": 30, "Name": "XYZ"};. Он имеет ключ "Name", дважды определяемый значением как ABC и XYZ. Предпочтение будет отдано последнему определенному, то есть «Имя»: «XYZ».
- Типом данных для вашего ключа может быть число, строка, число с плавающей запятой, логическое значение, кортежи, встроенные объекты, такие как float, и функции.
Например, my_dict = {bin: "001", hex: "6", 10: "ten", bool: "1", float: "12.8", int: 1, False: '0'};
Единственное, что запрещено, это то, что вы не можете определить ключ в квадратных скобках, например my_dict = {["Name"]: "ABC", "Address": "Mumbai", "Age": 30};
Как добавить элемент к ключу в словаре с помощью Python?
Мы можем использовать встроенную функцию append () для добавления элементов к ключам в словаре.Чтобы добавить элемент в словарь с помощью append (), мы должны сначала найти ключ, к которому нам нужно добавить.
Допустим, у вас есть словарь следующего вида:
my_dict = {"Имя": [], "Адрес": [], "Возраст": []};
Ключи в словаре - это имя, адрес и возраст. Используя методappend (), мы можем обновить значения ключей в словаре.
my_dict = {"Имя": [], "Адрес": [], "Возраст": []}; my_dict ["Имя"]. append ("Гуру") my_dict ["Адрес"].append ("Мумбаи") my_dict ["Возраст"]. append (30) печать (my_dict)
Когда мы печатаем словарь после обновления значений, вывод будет следующим:
Вывод:
{'Имя': ['Гуру'], 'Адрес': ['Мумбаи'], 'Возраст': [30]}
Доступ к элементам словаря
Данные внутри словаря доступны в виде пары ключ / значение. Чтобы получить доступ к элементам из словаря, вам нужно использовать квадратные скобки (['key']) с ключом внутри них.
Вот пример, который показывает доступ к элементам словаря с помощью ключа в квадратной скобке.
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Mumbai"} print ("имя пользователя:", my_dict ['имя пользователя']) print ("электронная почта:", my_dict ["электронная почта"]) print ("место:", my_dict ["место"])
Выход:
имя пользователя: XYZ электронная почта: Этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра. расположение: Мумбаи
Если вы попытаетесь использовать ключ, которого нет в словаре, будет выдана ошибка, как показано ниже:
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Mumbai"} print ("имя:", my_dict ['имя'])
Выход:
Отслеживание (последний вызов последний): Файл "отображение.py ", строка 2, вprint ("имя:", my_dict ['имя']) KeyError: 'имя'
Удаление элемента (ов) в словаре
Чтобы удалить элемент из словаря, вы должны использовать ключевое слово del .
Синтаксис:
del dict ['yourkey'] # Это удалит элемент с вашим ключом.
Чтобы удалить весь словарь, вы снова можете использовать ключевое слово del, как показано ниже:
del my_dict # это удалит словарь с именем my_dict
Чтобы просто очистить словарь или очистить содержимое словаря, вы можете использовать метод clear () в своем словаре, как показано ниже:
ваш_дикт.Чисто()
Вот рабочий пример, который показывает удаление элемента, очистку содержимого dict и удаление всего словаря.
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Mumbai"} del my_dict ['username'] # он удалит "username": "XYZ" из my_dict печать (my_dict) my_dict.clear () # пока не сделает словарьmy_dictempty печать (my_dict) delmy_dict # это удалит словарьmy_dict печать (my_dict)
Выход:
{'email': этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра. ',' Location ':' Mumbai '} {} Отслеживание (последний вызов последний): Файл "main.py", строка 7, впечать (my_dict) NameError: имя my_dict не определено
Удаление элемента (ов) из словаря с помощью метода pop ()
В дополнение к ключевому слову del вы также можете использовать метод dict.pop () для удаления элемента из словаря. Pop () - это встроенный метод, доступный со словарем, который помогает удалить элемент на основе заданного ключа.
Синтаксис:
dict.pop (ключ, значение по умолчанию)
Метод pop () возвращает элемент, удаленный для данного ключа, и если данный ключ отсутствует, он вернет значение по умолчанию. Если значение по умолчанию не указано и ключ отсутствует в словаре, будет выдана ошибка.
Вот рабочий пример, показывающий использование dict.pop () для удаления элемента.
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра. "," Location ":" Mumbai "} my_dict.pop ("имя пользователя") печать (my_dict)
Выход:
{'email': этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. ',' Location ':' Mumbai '}
Добавление элемента (ов) в словарь
Чтобы добавить элемент в существующий словарь, вы должны использовать имя словаря, за которым следует квадратные скобки с именем ключа и присвоить ему значение.
Вот пример того же:
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Mumbai"} my_dict ['name'] = 'Ник' печать (my_dict)
Выход:
{'username': 'XYZ', 'email': этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. ',' Location ':' Mumbai ',' name ':' Nick '}
Обновление существующих элементов в словаре
Чтобы обновить существующие элементы внутри словаря, вам нужна ссылка на ключ, значение которого должно быть обновлено.
Итак, у нас есть словарь my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "Location": "Mumbai"} .
Мы хотели бы изменить имя пользователя с XYZ на ABC. Вот пример, показывающий, как его можно обновить.
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Mumbai"} my_dict ["username"] = "ABC" печать (my_dict)
Выход:
{'username': 'ABC', 'email': этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра. ',' Location ':' Mumbai '}
Вставить словарь в другой словарь
Предположим, у вас есть два словаря, как показано ниже:
Словарь 1:
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Вашингтон"}
Словарь 2:
my_dict1 = {"firstName": "Ник", "lastName": "Цена"}
Теперь я хочу, чтобы словарь my_dict1 был вставлен в словарь my_dict.Для этого создадим в my_dict ключ с именем «name» и назначим ему словарь my_dict1.
Вот рабочий пример, показывающий вставку словаря my_dict1 в my_dict.
my_dict = {"username": "XYZ", "email": "Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для его просмотра.", "location": "Вашингтон"} my_dict1 = {"firstName": "Ник", "lastName": "Цена"} my_dict ["имя"] = my_dict1 печать (my_dict)
Выход:
{'username': 'XYZ', 'email': этот адрес электронной почты защищен от спам-ботов.У вас должен быть включен JavaScript для просмотра. ',' Location ':' Mumbai ',' name ': {' firstName ':' Nick ',' lastName ':' Price '}}
Теперь, если вы видите ключ «name», значит, в нем есть словарь my_dict1.
Описание:
- Словарь - один из важных типов данных, доступных в Python. Данные в словаре хранятся в виде пары ключ / значение. Пара ключ / значение разделяется двоеточием (:), а пара ключ / значение разделяется запятой (,). Ключи в словаре уникальны и могут быть строкой, целым числом, кортежем и т. Д.Значения могут быть списком или списком в списке, числами, строками и т. Д.
Важные встроенные методы в словаре:
Метод | Описание |
clear () | Он удалит все элементы из словаря. |
append () | Это встроенная функция Python, которая помогает обновлять значения ключей в словаре. |
update () | Метод update () поможет нам объединить один словарь с другим. |
pop () | Удаляет элемент из словаря. |
Словарь Python и методы словаря | Михаил Галарник
Определите словарь. Ключи красные. Значения выделены синим цветом.
Этот учебник по словарю Python охватывает:
- Как определить словарь
- Как получить доступ к значениям в словаре
- Как добавить, обновить и удалить ключи из словаря
- Методы словаря
- Как пройти по словарю
Итак, приступим.
Словари заключаются в фигурные скобки {}.
Определите словарь. Ключи красные. Значения выделены синим цветом.
# Определите код словаря
webstersDict = {'person': 'человек',
'marathon': 'бег на расстояние около 26 миль',
'resist': 'чтобы оставаться сильным против силы ',
' run ':' спешить; действовать быстро »}
Словарь webstersDict использовал строки в качестве ключей в словаре, но ключи словаря могут быть любым неизменяемым типом данных (числа, строки, кортежи и т. д.).Значения словаря могут быть чем угодно (int, списки, функции, строки и т. Д.).
Например, в приведенном ниже словаре гендерДикт имеет целые числа в качестве ключей и строки в качестве значений.
# Определить словарь
genderDict = {0: 'male',
1: 'female'}
Важно подчеркнуть, что если вы попытаетесь сделать ключ изменяемым типом данных (например, списком), вы получите сообщение об ошибке.
# Ошибка определения словаря
webstersDict = {(1, 2.0): 'кортежи могут быть ключами',
1: 'целые числа могут быть ключами',
'run': 'строки могут быть ключами',
[' носок ', 1, 2.0]: 'списки НЕ могут быть ключами'}
Неспособность определить словарь со списком в качестве ключа. Списки НЕ неизменяемы
Для доступа к словарному значению вы можете использовать квадратные скобки [].
Например, в приведенном ниже коде клавиша «марафон» используется для доступа к значению «бег на расстояние около 26 миль».
# Получить значение ключа 'marathon'
webstersDict ['marathon']
Доступ к ключу 'marathon'
Имейте в виду, что вы получите KeyError, если попытаетесь получить доступ к значению для ключа, которое делает не существует .
# Попытка получить значение для несуществующего ключа
webstersDict ['nonexistentKey']
KeyError будет результатом, если вы попытаетесь найти ключ, который не существует.
В разделе «Методы словаря» вы увидите полезность использования метода словаря get , чтобы избежать ошибок KeyErrors.
Добавить или обновить ключ
Вы можете добавить новую пару "ключ-значение".
# добавить одну новую пару «ключ-значение» в словарь
webstersDict ['shoe'] = 'внешнее покрытие для человеческой ступни'
Добавить новый ключ «shoe» в словарь.Новый ключ «башмак» заключен в красный прямоугольник.
Вы также можете обновить пару "ключ-значение".
Обновите ключ словаря «marathon»
В разделе «Методы словаря» вы увидите, что вы также можете добавлять или обновлять несколько пар ключ-значение одновременно, используя метод обновления словаря .
Удалить ключи из словаря
Можно удалить ключ и соответствующее ему значение из словаря с помощью del .
# Удалить ключ 'resist' из словаря
del webstersDict ['resist']
Удалить ключ 'resist' из словаря webstersDict.
В разделе «Методы словаря» вы увидите, что вы также можете удалять ключи, используя метод словаря pop.
В словарях Python есть разные методы, которые помогают изменять словарь. В этом разделе руководства рассматриваются различные методы словаря Python.
метод обновления
Метод обновления очень полезен для одновременного обновления нескольких пар значений ключей. В качестве аргумента он принимает словарь.
# Использование метода обновления для одновременного добавления двух пар ключ-значение
webstersDict.update ({'ran': 'прошедшее время бега',
'shoes': 'множественное число от shoe'})
В словарь добавлены ключи «run» и «shoes».
get method
# Определить словарь
storyCount = {'is': 100,
'the': 90,
'Michael': 12,
'run': 5}
Метод get возвращает значение для данного ключа. Если ключ не существует, словарь по умолчанию вернет None.
# Поскольку ключ «Майкл» существует, он вернет значение 12
storyCount.get ('Michael')
Поскольку ключ «Майкл» существует, он возвращает значение 12. Если «Майкл» не существует, он вернет None.
Этот метод очень полезен для поиска ключей, о которых вы не знаете, в словаре, чтобы избежать KeyErrors.
Их ключа "курица" не существует.
Вы также можете указать значение по умолчанию, которое будет возвращаться, если ключ не существует.
# Сделать значение по умолчанию для несуществующего ключа 0.
storyCount.get ('chicken', 0)
Вы можете убедиться в полезности этого метода, если попробуете подсчет слов Python.
Метод pop
Метод pop удаляет ключ и возвращает значение.
storyCount.pop ('the')
Словарь до и после удаления ключа ’the’ из словаря.
keys Метод
Метод keys возвращает ключи словаря.
storyCount.keys ()
значений Метод
Метод values возвращает значения в словаре.
storyCount.values ()
items Метод
Метод items возвращает список, подобный объекту кортежей, где каждый кортеж имеет форму (ключ, значение).
webstersDict.items ()
Вы можете перебирать ключи словаря с помощью цикла for.
для ключа в storyCount:
print (key)
Перебирать ключи словаря.
Вы также можете перебирать ключи словаря с помощью метода ключей.
для ключа в storyCount.keys ():
print (key)
Перебрать ключи словаря.
Цикл for ниже использует метод items для доступа к одной паре (ключ, значение) на каждой итерации цикла.
для ключа, значения в webstersDict.items ():
print (ключ, значение)
Итерация по парам ключ, значение словаря.
Если у вас возникли трудности с пониманием этого раздела, я рекомендую посмотреть следующее видео.
Пожалуйста, дайте мне знать, если у вас возникнут вопросы здесь или через Twitter! В следующей статье Python Word Count будут рассмотрены словарные методы, манипуляции со списками и строковые манипуляции. Если вы хотите узнать, как использовать библиотеки Pandas, Matplotlib или Seaborn, подумайте о том, чтобы пройти мой курс обучения LinkedIn по Python для визуализации данных.Вот бесплатный предварительный просмотр видео.
dict - справочник по Python (правильный путь) 0.1 документация
Словари - это изменяемые неупорядоченные коллекции (они не записывают позицию элемента или порядок вставки) пар ключ-значение. Ключи в словаре должны быть уникальными и хешируемыми. Сюда входят такие типы, как числа, строки и кортежи. Списки и dicts нельзя использовать в качестве ключей, поскольку они изменяемы. Словари на других языках также называются хеш-таблицами или ассоциативными массивами.
Числовые типы, используемые для ключей, подчиняются обычным правилам числового сравнения: если два числа сравниваются равными (например, 1 и 1.0), то их можно использовать взаимозаменяемо для индексации одной и той же словарной статьи. (Однако обратите внимание, что, поскольку компьютеры хранят числа с плавающей запятой в качестве приближенных значений, обычно неразумно использовать их в качестве ключей словаря.)
Методы
Доступ к содержимому
- получить
- Возвращает значение ключа в словаре; если не найден, возвращает значение по умолчанию.
- шт.
- Возвращает копию списка пар (ключ, значение) словаря.
- ключей
- Возвращает копию списка ключей словаря.
- значений
- Возвращает копию списка значений словаря.
Добавление элементов
- обновление
- Добавляет пары ключ: значение в словарь.
Удаление
- прозрачный
- Удаляет все элементы из словаря.
- население
- Удаляет ключ из словаря и возвращает его значение.
- человек
- Удаляет и возвращает произвольную пару ключ: значение из словаря.
Информация
- has_key
- Возвращает логическое значение, указывающее, находится ли указанный ключ в словаре.
Другое
- копия
- Возвращает частичную копию словаря.
- от ключей
- Возвращает новый словарь с ключами из предоставленного итеративного объекта и значениями, установленными на указанное значение.
Итераторы
- итераций
- Возвращает итератор по парам ключ: значение словаря.
- itervalues
- Возвращает итератор по значениям словаря.
- iterkeys
- Возвращает итератор по ключам словаря.
Просмотры словаря
- просмотров
- Возвращает новое представление элементов словаря (пары ключ: значение).
- просмотров
- Возвращает новое представление значений словаря.(симметричная разность)
- Возвращает элементы, которые появляются либо в dictview, либо в указанной итерации, но не в обоих.
- - (разница)
- Возвращает элементы, которые появляются в dictview, а не в указанной итерации.
- | (союз)
- Возвращает все элементы, которые появляются в dictview и указанной итерации.
Функции
- лен
- Возвращает тип int, определяющий количество элементов в коллекции.
- мин.
- Возвращает наименьший элемент из коллекции.
- макс
- Возвращает наибольший элемент в итерации или наибольший из двух или более аргументов.
- сумма
- Возвращает общее количество элементов, содержащихся в повторяемом объекте.
- отсортировано
- Возвращает отсортированный список из итерируемого объекта.
- обратное
- Возвращает обратный итератор по последовательности.
- все
- Возвращает логическое значение, указывающее, содержит ли коллекция только значения, которые имеют значение True.
- любой
- Возвращает логическое значение, указывающее, содержит ли коллекция какие-либо значения, которые оцениваются как True.
- перечислить
- Возвращает перечисляемый объект.
- молния
- Возвращает список кортежей, где i-й кортеж содержит i-й элемент из каждой из последовательностей аргументов или итераций.
Учебное пособие по словарю Python
Введение
Python имеет множество встроенных структур данных, способных хранить различные типы данных.Словарь Python - это одна из таких структур данных, которая может хранить данные в виде пар ключ-значение. Доступ к значениям в словаре Python можно получить с помощью ключей. В этой статье мы подробно обсудим словарь Python.
Создание словаря
Чтобы создать словарь Python, нам нужно передать последовательность элементов внутри фигурных скобок {}
и разделить их запятой (,). Каждый элемент имеет ключ и значение, выраженное в виде пары «ключ: значение».
Значения могут принадлежать к любому типу данных и могут повторяться, но ключи должны оставаться уникальными.
Следующие примеры демонстрируют, как создавать словари Python:
Создание пустого словаря:
dict_sample = {}
Создание словаря с целочисленными ключами:
dict_sample = {1: 'манго', 2: 'pawpaw'}
Создание словаря со смешанными ключами:
dict_sample = {'fruit': 'манго', 1: [4, 6, 8]}
Мы также можем создать словарь, явно вызвав метод Python dict ()
:
dict_sample = dict ({1: 'манго', 2: 'pawpaw'})
Словарь также можно создать из последовательности, как показано ниже:
dict_sample = dict ([(1, 'манго'), (2, 'pawpaw')])
Словари также могут быть вложенными, что означает, что мы можем создать словарь внутри другого словаря.Например:
dict_sample = {1: {'student1': 'Николас', 'student2': 'Джон', 'student3': 'Милосердие'},
2: {'course1': 'компьютерные науки', 'course2': 'математика', 'course3': 'бухгалтерский учет'}}
Чтобы распечатать содержимое словаря, мы можем использовать функцию Python print ()
и передать имя словаря в качестве аргумента функции. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
печать (dict_sample)
Выход:
{'Компания': 'Toyota', 'модель': 'Premio', 'год': 2012}
Доступ к элементам
Для доступа к элементам словаря введите ключ в квадратных скобках []
.Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
x = dict_sample ["модель"]
печать (х)
Выход:
Premio
Мы создали словарь с именем dict_sample
. Затем была создана переменная с именем x
, и ее значение было установлено как значение ключа «модель» в словаре.
Вот еще один пример:
dict = {'Имя': 'Милосердие', 'Возраст': 23, 'Курс': 'Бухгалтерский учет'}
print ("Имя ученика:", dict ['Имя'])
print ("Курс:", dict ['Курс'])
print ("Возраст:", dict ['Возраст'])
Выход:
Имя студента: Милосердие
Курс: Бухгалтерский учет
Возраст: 23 года
Объект словаря также предоставляет функцию get ()
, которую также можно использовать для доступа к элементам словаря.Мы добавляем к функции имя словаря, используя оператор точки, а затем передаем имя ключа в качестве аргумента функции. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
x = dict_sample.get ("модель")
печать (х)
Выход:
Premio
Теперь мы знаем, как получить доступ к элементам словаря с помощью нескольких различных методов. В следующем разделе мы обсудим, как добавлять новые элементы в уже существующий словарь.
Добавление элементов
Есть множество способов добавить новые элементы в словарь. Мы можем использовать новый индексный ключ и присвоить ему значение. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
dict_sample ["Вместимость"] = "1800CC"
печать (dict_sample)
Выход:
{'Мощность': '1800CC', 'год': 2012, 'Компания': 'Toyota', 'модель': 'Premio'}
Новый элемент имеет ключ «Емкость» и соответствующее ему значение «1800CC».Он был добавлен как первый элемент словаря.
Вот еще один пример. Сначала давайте сначала создадим пустой словарь:
MyDictionary = {}
print ("Пустой словарь:")
печать (MyDictionary)
Выход:
Пустой словарь:
Словарь ничего не возвращает, так как в нем еще ничего не сохранено. Давайте добавим к нему несколько элементов по одному:
MyDictionary [0] = "Яблоки"
MyDictionary [2] = "Манго"
MyDictionary [3] = 20
print ("Добавлено \ n3 элемента:")
печать (MyDictionary)
Выход:
Добавлено 3 элемента:
{0: "Яблоки", 2: "Манго", 3: 20}
Для добавления элементов мы указали ключи, а также соответствующие значения.Например:
MyDictionary [0] = "Яблоки"
В приведенном выше примере 0 - это ключ, а «Яблоки» - значение.
Мы даже можем добавить набор значений к одному ключу. Например:
MyDictionary ['Values'] = 1, «Пары», 4
print ("Добавлено \ n3 элемента:")
печать (MyDictionary)
Выход:
Добавлено 3 элемента:
{'Значения': (1, 'Пары', 4)}
В приведенном выше примере имя ключа - «Values», а все после знака =
- это фактические значения для этого ключа, сохраненные как Set.
Помимо добавления новых элементов в словарь, элементы словаря также могут быть обновлены / изменены, о чем мы поговорим в следующем разделе.
Обновление элементов
После добавления значения в словарь мы можем изменить существующий элемент словаря. Вы используете ключ элемента, чтобы изменить соответствующее значение. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
dict_sample ["год"] = 2014 г.
печать (dict_sample)
Выход:
{'год': 2014, 'модель': 'Premio', 'Компания': 'Toyota'}
В этом примере вы можете видеть, что мы обновили значение ключа «year» со старого значения 2012 года на новое значение 2014 года.
Удаление элементов
Удаление элемента из словаря может быть выполнено несколькими способами, которые мы подробно обсудим в этом разделе:
Ключевое слово del
может использоваться для удаления элемента с указанным ключом. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
дель dict_sample ["год"]
печать (dict_sample)
Выход:
{"Компания": "Toyota", "модель": "Premio"}
Мы вызвали ключевое слово del
, за которым следует имя словаря.Внутри квадратных скобок, следующих за названием словаря, мы передали ключ элемента, который нам нужно удалить из словаря, которым в этом примере был «год». Затем запись для «года» в словаре была удалена.
Другой способ удалить пару «ключ-значение» - использовать функцию pop ()
и передать ключ удаляемой записи в качестве аргумента функции. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
dict_sample.поп ("год")
печать (dict_sample)
Выход:
{"Компания": "Toyota", "модель": "Premio"}
Мы вызвали функцию pop ()
, добавив к ней имя словаря. Опять же, в этом примере будет удалена запись «год» в словаре.
Функция popitem ()
удаляет последний элемент, вставленный в словарь, без необходимости указывать ключ. Взгляните на следующий пример:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
dict_sample.popitem ()
печать (dict_sample)
Выход:
{"Компания": "Toyota", "модель": "Premio"}
Последней записью в словаре было «год». Он был удален после вызова функции popitem ()
.
А что, если вы хотите удалить весь словарь? Было бы сложно и обременительно использовать один из этих методов для каждой отдельной клавиши. Вместо этого вы можете использовать ключевое слово del
для удаления всего словаря.Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
дель dict_sample
печать (dict_sample)
Выход:
NameError: имя 'dict_sample' не определено
Код возвращает ошибку. Причина в том, что мы пытаемся получить доступ к словарю, которого не существует, так как он был удален.
Однако в вашем варианте использования может потребоваться просто удалить все элементы словаря и оставить пустой словарь.Этого можно добиться, вызвав функцию clear ()
в словаре:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
dict_sample.clear ()
печать (dict_sample)
Выход:
{}
Код возвращает пустой словарь, поскольку все элементы словаря были удалены.
Другие общие методы
Метод len ()
С помощью этого метода вы можете подсчитать количество элементов в словаре.Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
печать (len (dict_sample))
Выход:
3
В словаре три записи, поэтому метод вернул 3.
Метод copy ()
Этот метод возвращает копию существующего словаря. Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
х = dict_sample.копия ()
печать (х)
Выход:
{"Компания": "Toyota", "год": 2012, "модель": "Premio"}
Мы создали копию словаря с именем dict_sample
и присвоили ее переменной x
. Если на консоли напечатано x
, вы увидите, что он содержит те же элементы, что и хранящиеся в словаре dict_sample
.
Обратите внимание, что это полезно, потому что изменения, внесенные в скопированный словарь, не повлияют на исходный.
The items () Метод
При вызове этот метод возвращает итерируемый объект. Итерируемый объект имеет пары ключ-значение для словаря в виде кортежей в списке. Этот метод в основном используется, когда вы хотите перебрать словарь.
Метод просто вызывается для имени объекта словаря, как показано ниже:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
для k, v в dict_sample.items ():
печать (k, v)
Выход:
(«Компания», «Тойота»)
('модель', 'Premio')
('год', 2012)
Объект, возвращаемый функцией items ()
, также можно использовать для отображения изменений, внесенных в словарь.Это показано ниже:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
x = dict_sample.items ()
печать (х)
dict_sample ["model"] = "Отметить X"
печать (х)
Выход:
dict_items ([('Компания', 'Toyota'), ('модель', 'Premio'), ('год', 2012)])
dict_items ([('Компания', 'Toyota'), ('модель', 'Mark X'), ('год', 2012)])
Выходные данные показывают, что при изменении значения в словаре объект items также обновляется, чтобы отразить это изменение.
Метод fromkeys ()
Этот метод возвращает словарь с указанными ключами и значениями. Требуется синтаксис, приведенный ниже:
dictionary.fromkeys (ключи, значение)
Значение параметра ключей
является повторяемым и определяет ключи для нового словаря. Значение параметра value
является необязательным и указывает значение по умолчанию для всех ключей. Значение по умолчанию для этого - Нет
.
Предположим, нам нужно создать словарь из трех ключей с одинаковым значением. Сделать это можно так:
name = ('Джон', 'Николас', 'Милосердие')
возраст = 25
dict_sample = dict.fromkeys (имя, возраст)
печать (dict_sample)
Выход:
{'Джон': 25, 'Милосердие': 25, 'Николас': 25}
В приведенном выше сценарии мы указали ключи и одно значение. Метод fromkeys ()
смог выбрать ключи и объединить их с этим значением для создания заполненного словаря.
Значение параметра keys
является обязательным. В следующем примере показано, что происходит, когда значение параметра values
не указано:
name = ('Джон', 'Николас', 'Милосердие')
dict_sample = dict.fromkeys (имя)
печать (dict_sample)
Выход:
{"Джон": нет, "Милосердие": нет, "Николас": нет}
Было использовано значение по умолчанию: Нет
.
Метод setdefault ()
Этот метод применим, когда нам нужно получить значение элемента с указанным ключом. Если ключ не найден, он будет вставлен в словарь вместе с указанным значением.
Метод имеет следующий синтаксис:
dictionary.setdefault (имя ключа, значение)
В этой функции требуется параметр keyname
. Он представляет собой ключевое имя элемента, из которого нужно вернуть значение.Значение параметр
является необязательным. Если в словаре уже есть ключ, этот параметр не подействует. Если ключ не существует, то значение, указанное в этой функции, станет значением ключа. Значение по умолчанию - Нет
.
Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
x = dict_sample.setdefault ("цвет", "Серый")
печать (х)
Выход
серый
В словаре нет ключа для цвета
.Метод setdefault ()
вставил этот ключ, и указанное значение, то есть «Серый», было использовано в качестве его значения.
В следующем примере показано, как ведет себя метод, если значение ключа действительно существует: :
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
x = dict_sample.setdefault ("модель", "Allion")
печать (х)
Выход:
Premio
Значение «Allion» не влияет на словарь, так как у нас уже есть значение для ключа.
Метод keys ()
Этот метод также возвращает итерируемый объект. Возвращаемый объект представляет собой список всех ключей в словаре. Как и в случае с методом items ()
, возвращаемый объект может использоваться для отражения изменений, внесенных в словарь.
Чтобы использовать этот метод, мы вызываем его только по имени словаря, как показано ниже:
dictionary.keys ()
Например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
х = dict_sample.ключи ()
печать (х)
Выход:
dict_keys (['модель', 'Компания', 'год'])
Часто этот метод используется для перебора каждого ключа в вашем словаре, например:
dict_sample = {
«Компания»: «Тойота», г.
«модель»: «Премио»,
«год»: 2012
}
для k в dict_sample.keys ():
печать (k)
Выход:
Компания
модель
год
Заключение
Это знаменует конец данного руководства по словарям Python.Эти словари хранят данные в парах «ключ: значение». «Ключ» действует как идентификатор элемента, а «значение» - это значение элемента. Словарь Python содержит множество функций, которые можно применять для поиска или обработки данных. В этой статье мы увидели, как можно создавать, изменять и удалять словарь Python, а также некоторые из наиболее часто используемых методов словаря.
Учебные пособия и заметки по словарю | Python
Словари Python
Словарь - это набор неупорядоченных пар ключ-значение.В словаре ключи должны быть уникальными и храниться в неупорядоченном виде.
В этом руководстве вы изучите основы использования словаря Python.
По окончании обучения вы сможете
- Создавать словари
- Получить значения в словаре
- Добавление и удаление элементов в словаре
- Циклы To и For в словаре
Создание словаря
Попробуем с помощью словарей построить профиль трех человек. Для этого вы разделяете пары «ключ-значение» двоеточием («:»).Ключи должны иметь неизменяемый тип, то есть типы данных, для которых ключи не могут быть изменены во время выполнения, такие как int, string, tuple и т. Д. Значения могут быть любого типа. Отдельные пары будут разделены запятой («,»), а все это будет заключено в фигурные скобки ( {...}
).
Например, вы можете иметь поля «город», «имя» и «еда» для ключей в словаре и назначать пары ключ, значение словарной переменной person1_information.
>>> person_information = {'city': 'Сан-Франциско', 'name': 'Sam', "food": "креветки"}
>>> type (person1_information)
<класс 'dict'>
>>> print (person1_information)
{'city': 'Сан-Франциско', 'name': 'Сэм', 'food': 'креветки'}
Получить значения в словаре
Чтобы получить значения словаря из ключей, вы можете напрямую ссылаться на ключи.Для этого необходимо заключить ключ в скобки [...]
после записи имени переменной словаря.
Итак, в следующем примере словарь инициализируется ключами «город», «имя» и «еда», и вы можете получить значение, соответствующее ключу «город».
>>> создать словарь person1_information
>>> person1_information = {'city': 'Сан-Франциско', 'name': 'Сэм', "food": "креветки"}
>>> распечатать словарь
>>> print (person1_information ["город"])
Сан-Франциско
Вы также можете использовать метод get для получения значений в dict.Единственное отличие состоит в том, что в методе get вы можете установить значение по умолчанию. При прямой ссылке, если ключ отсутствует, интерпретатор выдает ошибку KeyError.
>>> # создать небольшой словарь
>>> alphabets = {1: ‘a’}
>>> # получаем значение с помощью ключа 1
>>> печать (alphabets.get (1))
'а'
>>> # получить значение с помощью ключа 2. Передать default в качестве значения по умолчанию. Поскольку ключ 2 не существует, вы получаете значение «по умолчанию» в качестве возвращаемого значения.
>>> печать (алфавиты.get (2, "по умолчанию"))
'дефолт'
>>> # получить значение с помощью ключа 2 через прямую ссылку
>>> print (алфавиты [2])
Отслеживание (последний вызов последний):
Файл "", строка 1, в
KeyError: 2
Цикл по словарю
Допустим, у вас есть словарь, и вы хотите распечатать в нем ключи и значения. Обратите внимание, что используются ключевые слова для
и в
, которые используются, когда вы пытаетесь что-то перебрать. Чтобы узнать больше о зацикливании, посмотрите учебник по зацикливанию.
>>> person1_information = {'city': 'Сан-Франциско', 'name': 'Sam', "food": "креветки"}
>>> для k, v в person1_information.items ():
... print ("ключ:% s"% k)
... print ("значение:% s"% v)
... Распечатать("###########################")
...
ключ: еда
значение: креветки
##########################
ключ: город
значение: Сан-Франциско
##########################
ключ: имя
значение: Сэм
##########################
Добавить элементы в словарь
Вы можете добавлять элементы, обновляя словарь новым ключом и затем присваивая значение новому ключу.
>>> # инициализировать пустой словарь
>>> person1_information = {}
>>> # добавить ключ, информацию о значении с ключом «город»
>>> person1_information ["city"] = "Сан-Франциско"
>>> # распечатать информацию о настоящем человеке
>>> print (person1_information)
{'city': 'Сан-Франциско'}
>>> # добавить еще один ключ, информацию о значении с ключом «name»
>>> person1_information ["name"] = "Сэм"
>>> # распечатать текущий словарь
>>> print (person1_information)
{'city': 'Сан-Франциско', 'name': 'Сэм'}
>>> # добавить еще один ключ, информацию о значении с помощью ключа "food"
>>> person1_information ["food"] = "креветки"
>>> # распечатать текущий словарь
>>> print (person1_information)
{'city': 'Сан-Франциско', 'name': 'Сэм', 'food': 'креветки'}
Или вы можете объединить два словаря, чтобы получить больший словарь, используя метод обновления.
>>> # создать небольшой словарь
>>> person1_information = {'city': 'Сан-Франциско'}
>>> # распечатайте его и проверьте присутствующие элементы в словаре
>>> print (person1_information)
{'city': 'Сан-Франциско'}
>>> # есть другой словарь
>>> оставшаяся_информация = {'name': 'Sam', "food": "креветки"}
>>> # добавляем второй словарь Остающаяся_информация в личную1_информацию с помощью метода обновления
>>> person1_information.обновить (оставшаяся_информация)
>>> # распечатать текущий словарь
>>> print (person1_information)
{'city': 'Сан-Франциско', 'name': 'Сэм', 'food': 'креветки'}
Удалить элементы словаря
Чтобы удалить пару ключ-значение в словаре, вы можете использовать метод del
.
>>> # инициализировать словарь ключами «город», «имя», «еда»
>>> person1_information = {'city': 'Сан-Франциско', 'name': 'Сэм', "food": "креветки"}
>>> # удаляем пару ключ, значение с ключом food
>>> del person1_information ["еда"]
>>> # распечатать настоящую личную1_информацию.Обратите внимание, что ключевой пары значений «еда»: «креветки» больше нет.
>>> print (person1_information)
{'city': 'Сан-Франциско', 'name': 'Сэм'}
Недостатком является то, что выдает ошибку KeyError, если вы пытаетесь удалить несуществующий ключ.
>>> # инициализировать словарь ключами «город», «имя», «еда»
>>> person1_information = {'city': 'Сан-Франциско', 'name': 'Сэм', "food": "креветки"}
>>> # удаление несуществующего ключа приводит к ошибке ключа.>>> del person1_information ["несуществующий_ ключ"]
Отслеживание (последний вызов последний):
Файл "", строка 1, в
KeyError: 'non_existent_key'
Итак, вместо оператора del
вы можете использовать метод pop
. Этот метод принимает ключ в качестве параметра. В качестве второго аргумента вы можете передать значение по умолчанию, если ключ отсутствует.
>>> # инициализировать словарь парами ключ, значение
>>> person1_information = {'city': 'Сан-Франциско', 'name': 'Сэм', "food": "креветки"}
>>> # удаляем ключ, пару значений с ключом food и значением по умолчанию None
>>> print (person1_information.pop ("еда"; Нет))
'Креветки'
>>> # распечатать обновленный словарь. Обратите внимание, что ключа «еда» больше нет.
>>> print (person1_information)
{'city': 'Сан-Франциско', 'name': 'Сэм'}
>>> # попробуйте удалить несуществующий ключ. Это вернет None, поскольку None задано как значение по умолчанию.
>>> print (person1_information.pop ("еда", Нет))
Никто
Дополнительные факты о словаре Python
Проверить наличие ключа можно с помощью метода has_key
.
>>> алфавиты = {1: ‘a’}
>>> alphabets.has_key (1)
Истинный
>>> alphabets.has_key (2)
Ложь
Словарь в Python не сохраняет порядок. Отсюда получаем:
>>> call = {'sachin': 4098, 'guido': 4139}
>>> call ["snape"] = 7663
>>> позвонить
{'snape': 7663, 'sachin': 4098, 'guido': 4139}
Вы видите, что хотя «snape» было дано позже, оно появилось наверху.