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

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

  1. Несколько ограничений списков (не с технической точки зрения), в которых можно использовать словарь.
  2. Как создаются словари и как к ним получить доступ.
  3. Возможности словаря (в упрощенном виде). ​​
  4. Перебирайте словари с помощью циклов и понимания словаря.

Ограничения списков (не с технической точки зрения)

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

Предположим, нам нужно сохранить информацию об университете (название, год основания, местонахождение, тип организации, количество студентов). Мы можем представить это с помощью списка, как показано на рисунке слева.

Но на приведенном выше рисунке мы не можем декодировать несколько элементов в списке, например 11 574, что указывает на «количество студентов», это известно только человеку, который его создал. Итак, очевидно, что приведенный выше список не является информативным и понятным. Словари можно использовать в таких сценариях, которые подробно описаны. Посмотрим, как их создать.

Создание словарей и доступ к ним

Словари могут хранить все виды данных, например списки (они могут даже хранить списки, кортежи или другой словарь как элементы [значения]). Словарь всегда представлен в Python с помощью {}.

Творчество

Есть разные методы создания словаря. Значения могут быть любого типа данных (от int до вложенных словарей). В отличие от списков, где списки имеют индексы как целые числа (0,1,2…), но в словарях, ключи рассматриваются как индексы и могут быть смешанного типа, например (int, float, boolean, string).

Есть разные методы создания словаря. Я расскажу о трех наиболее часто используемых методах

Метод-1: словарь можно создать с помощью функции dict (), которая является встроенной функцией в Python.

Метод 2: с использованием пар "ключ-значение". Пары "ключ-значение" всегда разделяются «:» (двоеточием) в словаре . Это наиболее часто используемый метод, и если вы забудете разделить ключ и значение знаком «:», это приведет к ошибке.

Метод 3: их также можно создать, используя список кортежей, как показано на рисунке.

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

Доступ к словарям

В отличие от списков, словари представляют собой неупорядоченный набор элементов. Таким образом, мы не можем их проиндексировать (как мы это делаем в списке, например, List [0] = › для доступа к первому элементу в списке). Доступ к словарям можно получить только с помощью ключей.

Наиболее частые ошибки, которые могут возникнуть при доступе к словарю

  1. Если у нас нет ключа и мы пытаемся получить доступ к словарю с помощью недоступного ключа, тогда python выдает «ошибку ключа», говоря, что у вас нет такого ключа в словаре, как показано на рисунке.
  2. Мы столкнемся с «ошибкой имени» в словаре, если мы используем переменную вместо ключа, прежде чем присвоить переменной какое-то произвольное значение.

Упрощенный вид внутренней памяти словаря

Это то, как внутри dict хранится. Но когда мы визуализируем dict (он представлен в {}). Каждому из них соответствует два столбца (ключи и значения). Этот шаблон следует за любым количеством пар в словаре.

Сила словаря

Допустим, нам нужно найти в данном списке город под названием «Дублин». Обычно поиск по спискам происходит S равноценно. Он начинается с индекса 0 (th) и выполняет поиск до n-1 (th) в списке из «n» элементов. (То же самое показано на рисунке, чтобы найти «Дублин», он начинается с индекса 0 (th) и продвигается вперед. То же самое и с кортежами.

Но когда дело доходит до словаря или хеш-таблиц, хеширование использовалось для поиска по словарю, и они (словарь или хеш-таблицы) разработаны таким образом, что они могут напрямую обращаться к точному месту, где хранится Дублин (не последовательный поиск). Итак, Словари - это гораздо более быстрый и эффективный способ поиска или обработки информации по сравнению со списками или кортежами. С технической точки зрения можно сказать, что временная сложность (словари) очень низкая .

Итерация в словарях

Итерации по словарям немного отличаются от других структур данных, потому что в словарях у нас есть пары (ключ-значение), тогда как в списках или кортежах у нас есть только один элемент в каждом индексе, а также список сам по себе является повторяемым.

Чтобы извлечь значения из словаря, нам нужно использовать метод .values ​​(). На рис. 8 можно увидеть разницу между итерацией по спискам и словарям (с точки зрения значений).

Точно так же нам нужно использовать метод .keys () для перебора ключей в словаре. Как вы можете видеть на Рис. 9, то же самое можно сделать и без использования метода «.keys ()» (в любом случае это не рекомендуется).

Чтобы перебирать в словаре одновременно обе пары (ключ-значение), мы используем метод .items (). Этот метод возвращает итеративную коллекцию (список кортежей.

Разборчивость слов

Это похоже на понимание списка (предварительное понимание понимания списка поможет лучше понять). Я бы очень кратко рассказал о понимании слов, потому что это одна из самых сложных тем в словарях.

Синтаксис: {__: __ for__in__} - по умолчанию выполняется перебор ключей. Если мы хотим перебрать ключи и значения, мы должны использовать метод .items (). Условная логика также может быть написана в dict-computing (см. Рис. 11)

Методы в словарях

В этой части я кратко рассмотрю несколько встроенных методов (clear, copy, fromkeys, get, pop, popitem) структуры данных словаря.

1. clear ()

clear () - - очищает все «ключи и значения» в словаре. Но он не удаляет весь объект словаря из памяти. Если вы хотите удалить весь объект словаря из памяти, тогда нам нужно использовать del. Если вы попытаетесь получить доступ к удаленному словарю, вы получите «NameError» , del может также может использоваться для удаления одного элемента из словарей.

2. копия ()

Метод copy () создаст повторяющийся словарь по другому адресу памяти. Это можно проверить, как показано на Рис. 13. Здесь «==» указывает, совпадают ли значения в двух словарях или нет. Принимая во внимание, что «есть» относится к тому, ссылаются ли оба словаря (как исходный, так и скопированный) на один и тот же адрес в памяти или нет. Изменение одного из них не повлияет на другие, поскольку оба хранятся по разным адресам.

3. от клавиш ()

fromkeys () создает пары "ключ-значение" из значений, разделенных запятыми. условие , которое необходимо соблюдать - Ключ должен быть повторяющейся коллекцией словаря. Всем итерациям в ключе будет присвоено одно и то же значение, указанное в части Value, как показано на Рис-14. Это редко используемый метод создания словарей.

4. get ()

Метод get () извлекает ключ в объекте и возвращает None вместо keyError, если ключ не существует. Самым большим преимуществом является это не вызывает ошибки, даже если мы пытаемся получить доступ к ключу, которого нет в словаре.

На рис. 15 —- sample_dict.get (‘a’) эквивалент sample_dict [‘a’]

5. поп ()

В списках мы используем метод pop () для удаления элемента из списка. В словарях мы используем его для удаления пары (ключ, значение). Метод pop () должен иметь хотя бы один аргумент, соответствующий ключу. Он удаляет эту конкретную пару (ключ-значение) из словаря, возвращая значение, соответствующее удаленному ключу. Если мы попытаемся удалить ключ, которого нет в словаре, это вызовет ошибку ключа, которую можно преодолеть, предоставив ей необязательный аргумент (как показано в последнем на Рис. 16).

6.попьем ()

Если мы хотим случайным образом удалить пару (ключ-значение) из словаря, мы должны использовать метод popitem (). Если для popitem () предоставлен какой-либо аргумент, мы получим ошибку, потому что он не принимает никаких аргументов.

7. обновление ()

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

Чтобы перечислить все доступные методы и атрибуты словаря, используйте dir (dictionary_oject)

Вывод

Большинство основ, касающихся словарей Python, обсуждались в этом блоге.

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

Спасибо, что дочитали до сих пор. Я стремлюсь улучшить свой стиль и методы презентации. Так что, если у вас есть предложения или есть чем поделиться, не стесняйтесь комментировать или связываться со мной через linkedin здесь.