Как добавить элемент в словарь Python
Функция dict позволяет не только создать словарь, но и добавить в него пары ключ-значение. Смотрите пример:
dct = dict( <'a': 1, 'b': 2>) print(dct)'a':>
Результат выполнения кода:
C помощью метода fromkeys
Также одновременно создать словарь и задать ему элементы возможно применив метод fromkeys , в первом параметре которого указываются ключи, а во втором необязательном параметре — их значение. Смотрите пример:
dct = dict.fromkeys( [‘1’, ‘2’], ‘a’ ) print(dct)
Результат выполнения кода:
C помощью присвоения ключу значения
Для того, чтобы включить в словарь новый элемент или изменить исходный, нужно обратить к нему по ключу, установив при этом нужно значение. Смотрите пример:
dct = <'a': 1, 'b': 2>dct[‘c’] = 3 print(dct)'a':>
Результат выполнения кода:
C помощью метода update
Также можно добавить в исходный словарь элементы из другого словаря посредством метода update . В параметре метода указываем словарь, которым дополним исходный. Смотрите пример:
dct1 = < 'a': 1, 'b': 2 >dct2 = < 'c': 3 >dct1.update(dct2) print(dct1)
Результат выполнения кода:
Смотрите также
- функция dict ,
которая создает словарь - метод update ,
который обновляет словарь ключами и значениями другого словаря
Словари (dict) и работа с ними. Методы словарей
Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.
Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.
Чтобы работать со словарём, его нужно создать. Сделать это можно несколькими способами. Во-первых, с помощью литерала:
Во-вторых, с помощью функции dict:
В-третьих, с помощью метода fromkeys:
В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы списков.
Теперь попробуем добавить записей в словарь и извлечь значения ключей:
: Как видно из примера, присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения есть специальный метод (см. ниже), или можно перехватывать исключение.
Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.
Методы словарей
dict.clear() — очищает словарь.
dict.copy() — возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() — возвращает пары (ключ, значение).
dict.keys() — возвращает ключи в словаре.
dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).
dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() — возвращает значения в словаре.
Для вставки кода на Python в комментарий заключайте его в теги
Словари в Python
Иногда данные очень связаны. Настолько, что хранить их хочется вместе. Например, соответствие столиц:
Россия: Москва
Китай: Пекин
США: Вашингтон
Если вы знаете о списках, вы можете сделать это так:
countries = ["Россия", "Китай", "США"] capitals = ["Москва", "Пекин", "Вашингтон"]
Но это всё ещё не круто. При работе со списками может случиться казус. Например, мы решим удалить Китай и добавить Францию:
["Россия", "США", "Франция"] ["Москва", "Пекин", "Вашингтон"]
Теперь Столица США – Пекин, а Франции – Вашингтон. Списки – не очень удобный инструмент для хранения пар данных, для такого используют словари:
capitals_mapping = "Россия": "Москва", "США": "Вашингтон", "Китай": "Пекин" >
Словарь — это способ хранить связи между штуками (обычно строками, но можно использовать и другие виды данных). Так же, как в обычном словаре: англо-русский словарь хранит связи между русскими словами и английскими. Так же и в питоне, словарь хранит пары элементов. Зная первый, всегда можно получить второй по ключу:
russian_capital = capitals_mapping["Россия"] print(russian_capital)
Это тоже работает как в обычном словаре: зная русское слово вы всегда можете найти его перевод в русско-английском словаре. Зная первый элемент, всегда можно получить второй. Поэтому первый элемент называют ключ, а второй — значение. В коде выше мы получили значение "Москва" , сказав словарю ключ "Россия" .
Добавить элемент в словарь
Чтобы добавить новую пару элементов в словарь, можно прировнять его значение по этому ключу:
capitals_mapping["Франция"] = "Париж" print(capitals_mapping)
Выведется словарь с новой парой:
'Россия': 'Москва', 'Китай': 'Пекин', 'США': 'Вашингтон', 'Франция': 'Париж'>
Убрать элемент из словаря
Элементы из словаря удаляются немного странно:
del capitals_mapping['Россия'] print(capitals_mapping) # Выведется словарь без пары Россия-Москва: #
Отредактировать словарь
Значения ключей можно менять так же, как создаются новые:
capitals_mapping["Франция"] = "Новый Париж"
Что дальше
Если статья не смогла объяснить что же такое словари или вы хотите почитать о них ещё, подойдут эти статьи:
- О словарях на metanit
- О словарях на pythontutor
- Примеры использования словарей с циклами и условиями
Попробуйте бесплатные уроки по Python
Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.
Переходите на страницу учебных модулей «Девмана» и выбирайте тему.
Словари Python
Словарем в языке программирования Python называется неупорядоченный набор данных произвольного типа с доступом по ключу. Элементами такой коллекции выступают пары объектов, каждая из которых включает в себя ключ и значение. Для работы со словарями доступны функции, меняющие их содержимое и выполняющие различные операции над ними. Его можно конвертировать в другие типы данных, например, в строку.
Создание
Перед тем как начать работу со словарем, его нужно создать. Сделать это можно базовыми средствами языка, присвоив свободной переменной произвольное количество пар объектов. Элементы необходимо поместить в фигурные скобки, а между ключом и значением должен стоять символ двоеточия. Следующий пример демонстрирует создание словаря под именем a, который включает в себя ключи в виде чисел и значения в виде строк.
a = print(a)
Вывести содержимое словаря можно стандартной функцией print, указав для нее в качестве аргумента нужный набор данных. Для заполнения словаря также используется метод dict, получающий произвольное количество пар ключей и значений. В таком случае быть ключом может только строка, как это показано в следующем примере кода.
a = dict(one = 1, two = 2, three = 3) print(a)
Как и в прошлый раз, функция print отображает содержимое словаря a. В данном случае имеется пары объектов, представленных также в виде чисел и строк.
Добавление элемента
В Python 3 содержимое словаря можно в любой момент изменить по своему усмотрению. К примеру, для того чтобы внести в коллекцию новую пару объектов необходимо всего лишь указать новый ключ в квадратных скобках, а также соответствующее ему значение.
a = a[4] = "four" print(a)
В приведенном выше коде применяется оператор присваивания, благодаря чему новая пара (4 : “four”) помещается в конец уже созданной ранее коллекции a.
Объединение словарей
В том случае, если возникла необходимость в перемещении данных из одного словаря в другой, стоит воспользоваться функцией объединения update. Вызвать ее нужно на объекте, который предполагается расширить новыми парами ключей и значений. Вот пример как в Python добавить в словарь словарь:
a = b = a.update(b) print(a)
Результатом работы метода print станет вывод на экран обновленного содержимого словаря под названием a.
После объединения, новые элементы были автоматически записаны в конец коллекции.
Удаление элемента
Если словарь содержит лишнюю информацию, от нее можно легко избавиться при помощи специальной операции del. Для ее выполнения необходимо указать имя коллекции, а также ключ в квадратных скобках. Следующий пример показывает удаление пары.
a = del a[3] print(a)
Так как операция получила ключ 3, в результате ее работы удалилось и значение three.
Получение размера
Функция len позволяет в любой момент определить текущее количество элементов словаря, если передать ей в качестве аргумента имя коллекции. В приведенном ниже примере метод print осуществляет вывод на экран размерность словаря a.
a = print(len(a)) 3
Стоит заметить, что функция len возвращает точное количество пар, но не объектов. В этом случае имеется словарь, который содержит в себе ровно 3 пары.
Перебор словаря
Произвести перебор элементов словаря можно несколькими способами, в зависимости от желаемой для получения информации о его содержимом.
Перебор элементов можно осуществить с целью получения для последующей обработки:
- Пар ключ-значение;
- Перебор всех ключей;
- Перебор значений.
В данном примере показывается как вывести на экран все пары этой коллекции в формате ключ : значение. Для этого используется цикл for и функция items, работающая с элементами словаря.
a = for key, value in a.items(): print(key, ":", value) 1 : one 2 : two 3 : three
Чтобы получить только ключи, следует применить метод keys, вызывав его на словаре.
a = for key in a.keys(): print(key) 1 2 3
Аналогичным образом нужно поступить, чтобы вывести только значения словаря. Однако в таком случае в цикле for используется метод values.
a = for val in a.values(): print(val) one two three
В обоих случаях отображается только выбранная часть пары, ключ или значение.
Поиск
Проверить наличие определенного ключа можно при помощи операции in. Для этого достаточно вывести результат ее выполнения для словаря по имени a.
a = print(2 in a) print(4 in a) True False
Как можно заметить, проверка ключа 2 дала положительный результат (True). Во втором случае вывелось значение False, поскольку ключа 4 в словаре не обнаружено.
Сортировка
Средства языка дают возможность проводить в Python сортировку словаря по ключам и значениям, в зависимости от необходимости. В следующем примере имеется коллекция данных по имени a, в которой содержится информация в произвольном порядке. Ключами здесь выступают числа, а значениями являются строки. Сортировка осуществляется за счет импортированного модуля operator и встроенного метода itemgetter, получающего 0 или 1.
import operator a = b = sorted(a.items(), key = operator.itemgetter(0)) print(b) b = sorted(a.items(), key = operator.itemgetter(1)) print(b) [(1, 'one'), (2, 'two'), (3, 'three')] [(1, 'one'), (3, 'three'), (2, 'two')]
Как можно заметить, аргумент 0 позволяет отсортировать словарь по ключу, в то время как 1 дает возможность вывести его содержимое в алфавитном порядке значений.
Сравнение
Иногда нужно удостовериться, что два словаря содержат абсолютно одинаковые данные, либо узнать какая коллекция больше или меньше по размеру. В этом случае на помощь приходит метод cmp, получающий в качестве параметров два словаря.
a = b = c = print(cmp(a, b)) print(cmp(b, c)) print(cmp(a, c)) 1 -1 0
Приведенный код продемонстрировал выполнение метода cmp с трема комбинациями аргументов. Как видно из результатов выдачи, функция возвращает 1, если первый больше второго, -1, если наоборот и 0, когда данные полностью идентичны.
Копирование
Метод copy используется для копирования содержимого одного словаря в другой. Данный пример демонстрирует перенос ключей и значений из коллекции a в b.
a = b = a.copy() print(b)
Как можно заметить, порядок и содержимое всех пар было сохранено в новом наборе.
Очистка
Чтобы избавиться от всех элементов словаря, стоит вызвать для него функцию clear.
a = a.clear() print(a) <>
В результате получается абсолютно пустой набор данных.
Генератор словарей
Как и с другими наборами данных, производить заполнение словарей можно при помощи генераторов. В следующем примере демонстрируется создание числовых пар коллекции с использованием генератора словарей Python с методом range, получающего в качестве аргумента 5.
a = print(a)
Таким образом, на выходе получается словарь a, включающий в себя ровно 5 пар. Ключами являются числа от 0 до 4, а значениями выступают их математические квадраты.
Конвертация в строку
Словарь можно очень легко преобразовать в строку для более удобной работы с цельным представлением его содержимого. Чтобы сделать это, потребуется функция str. Как можно видеть из результатов выполнения метода type, конвертация прошла успешно.
a = b = str(a) print(b) print(type(b))
Аналогичным образом происходит обратное преобразование строки Python в словарь. Важно, чтобы ее текстовое содержимое подходило по структуре под рассматриваемую коллекцию.
a = '' b = eval(a) print(b) print(type(b))
Как видно из примера, метод eval конвертирует весь текст строки в новый словарь.
Вложенные
В Python словари могут быть вложенными, то есть выступать частью другого более крупного словаря. При помощи уже знакомых ранее фигурных скобок и двоеточий можно обозначить границы этого набора данных и указать программе пары ключей со значениями.
a = < "First": < 1: "one", 2: "two", 3: "three" >, "Second": < 4: "four", 5: "five" >> print(a) , 'Second': >
В примере, описанном выше, создается словарь a, включающий в себя два других словаря (First и Second). Те, в свою очередь, содержат несколько пар ключей и значений.
Резюме
Следующая таблица демонстрирует краткую сводку по всем рассмотренным методам для работы со словарями в Python 3. В таблице отображаются названия методов, а также информация о их назначении.
| Название | Назначение |
| update | Объединение содержимого двух словарей в один |
| len | Получение размера |
| items | Возвращает пары (ключи и значения) |
| keys | Возвращает ключи |
| values | Возвращает значения |
| copy | Копирует содержимое в другой словарь |
| clear | Полная очистка всех элементов |
| eval | Конвертация строки в словарь |
