Разное

Словарь 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'}

Также метод обновляет значения существующих ключей. Включает еще ряд особенностей.

Практическая работа

  1. Создайте словарь, связав его с переменной school, и наполните данными, которые бы отражали количество учащихся в разных классах (1а, 1б, 2б, 6а, 7в и т. п.). Внесите изменения в словарь согласно следующему: а) в одном из классов изменилось количество учащихся, б) в школе появился новый класс, с) в школе был расформирован (удален) другой класс. Вычислите общее количество учащихся в школе.

  2. Создайте словарь, где ключами являются числа, а значениями – строки. Примените к нему метод 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

Поделиться

Источник


lfaraone    

21 июня 2009 в 22:07

16 ответов




3524

d = {'key': 'value'}
print(d)
# {'key': 'value'}
d['mynewkey'] = 'mynewvalue'
print(d)
# {'key': 'value', 'mynewkey': 'mynewvalue'}

вы создаете новую пару key\value в словаре, присваивая ей значение
к этому ключу. Если ключ не существует, он добавляется и указывает на это
значение. Если он существует, текущее значение, на которое он указывает, перезаписывается.
— R. Навега

Поделиться


Paolo Bergantino    

21 июня 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}

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

Поделиться


Unknown    

22 июля 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 Jindle    

05 декабря 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 — это неупорядоченная структура данных. Даже если вы будете добавлять в словарь элементы упорядоченно, например по алфавиту, при выводе они могут отобразится по-другому.

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

Сортировка по ключам

Проще всего выполнить сортировку словаря по ключам. Алгоритм вывода содержимого словаря:

  1. Создать список ключей словаря.
  2. Отсортировать его.
  3. В цикле 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

Dict = { 1 : «Компьютерщики» , 2 : «Для» , 3 : 'Geeks' }

печать ( "\ nСловарь с использованием целочисленных клавиш:" )

печать ( Dict )

Dict = { «Имя» : «Компьютерщики» , 1 : [ 1 , 2 , 3 , 4 ]}

печать ( "\ nСловарь с использованием смешанных клавиш:" )

печать ( Dict )

Dict = {}

print ( "Пустой словарь:" )

print ( Dict

0)

Dict = dict ({ 1 : 'Компьютерщики' , 2 : 'Для' , 3 : 'Geeks' })

print ( "\ nСловарь с использованием dict ():" )

print ( Dict )

Dict = dict ([( 1 , 'Geeks' ), ( 2 , 900 45 ‘For’ )])

print ( "\ nСловарь с каждым элементом как парой:" )

print ( Dict )

Dict = { 1 : 'Компьютерщики' , 2 : 'Для' ,

3 : { 'A' : 'Добро пожаловать' , 'B' : 'Кому' , 'C' : 'Geeks' }}

print ( Dict )

Dict = {}

print ( "Пустой словарь:" )

print ( Dict

0)

Dict [ 0 ] = «Компьютерщики»

Dict [ 2 ] = «For»

Dict [ 3 ] = 1

печать ( "\ nСловарь после добавления 3 элементов:" )

печать ( Dict )

Dict [ 'Value_set' ] = 2 , 3 , 4

печать ( "\ nСловарь после добавления 3 элементов:" )

печать ( Dict )

Dict [ 2 ] = 'Добро пожаловать'

печать ( "\ nОбновленное значение ключа:" )

печать ( Dict )

Dict [ 5 ] = { 'Вложенный' : { '1' : 'Жизнь' , '2' : 'Geeks' }}

print ( "\ nДобавление вложенного ключа:" )

печать ( Dict )

Dict = { 1 : «Компьютерщики» , «имя» : для » , 3 : «Компьютерщики» }

печать ( "Доступ к элементу с помощью клавиши:" )

печать ( Dict [ 'name' ])

print ( "Доступ к элементу с помощью клавиши:" )

print ( Dict [ 1 ])

Dict = { 1 : «Компьютерщики» , «имя» : «Для» , 3 : 'Geeks' }

print ( "Доступ к элементу с помощью get:" )

print ( Dict .получить ( 3 ))

Dict = { 'Dict1' : { 1 : 'Geeks' },

'Dict2' : { 'Имя' : 'Для' }}

печать ( Dict [ 'Dict1' ])

печать ( Dict [ 'Dict1' ] [ 1 ])

печать ( Dict [ 'Dict2' ] [ ] [ ] «Имя» ])

Dict = { 5 : «Добро пожаловать» , 6 : «Кому» , 7 : «Компьютерщики» ,

«A» : { 1 : «Компьютерщики» , 2 : «Для» , 3 : «Компьютерщики» },

«B» : { 1 : «Компьютерщики» , 2 : «Жизнь» }}

печать ( "Исходный словарь:" )

печать ( Dict )

9 0002 del Dict [ 6 ]

print ( "\ nУдаление определенного ключа:" )

print ( Dict )

del Dict [ 'A' ] [ 2 ]

print ( "\ nУдаление ключа из вложенного словаря:" )

печать ( Dict )

Dict = { 1 : «Компьютерщики» , «имя» : «Для» , 3 : 'Geeks' }

pop_ele = Dict .pop ( 1 )

print ( '\ nСловарь после удаления: ' + str ( Dict ))

print ( ' Значение, связанное с всплывающей клавишей: ' + str (pop_ele))

Dict = { 1 : «Компьютерщики» , «имя» : «Для» , 3 : 'Geeks' }

pop_ele = Dict .popetm ()

print ( "\ nСловарь после удаления:" + str ( Dict ))

print ( "Произвольная возвращенная пара:" + str (pop_ele))

Dict = { 1 : «Компьютерщики» , «имя» : «Для» , 3 : 'Geeks' }

Dict .clear ()

print ( "\ n Удаление всего словаря:" ) 9002

печать ( Dict )

Методы Описание
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.

Метод Описание
clear () Он удалит все элементы из словаря.
append () Это встроенная функция Python, которая помогает обновлять значения ключей в словаре.
update () Метод update () поможет нам объединить один словарь с другим.
pop () Удаляет элемент из словаря.