Искать
Вы превысили запрос на
0 знаков

22. Словари в Python

Не пройден
0
0

Кратко

- Словари в Python напоминают ассоциативные массивы и аналогичны контейнеру map в С++.

- Словарь объявляется в фигурных скобках с указанием ключа и значения через двоеточие.

- Ключ и значение могут быть любым объектом Python.

- Обращение к элементу словаря осуществляется по ключу, а не индексу.

- Динамическое добавление элементов в словарь осуществляется через метод setdefault().

- Метод setdefault() позволяет избежать ошибок при подсчете частоты символов в строке.

В предыдущих уроках мы познакомились со списками и операциями над ними (Списки в Python, Изменение списка на месте (срезы) в Python, Дополнительно про списки в Python, Конкатенация и сортировка списков в Python). Но они не всегда могут помочь. Например, когда у нас имеются данные в виде ключ/значение, удобнее использовать словари.

Словари в Python напоминают ассоциативные массивы. В них так же уникальному значению ключа соответствует произвольное значение. В языке С++ ему аналогичен контейнер map. Как объявить словарь в Python? Он объявляется в фигурных скобках:

Пример (python)
person = {"firstname": "Ivan",
          "lastname": "Ivanov",
          "age": 30}

print(person["firstname"])  

Сначала записывается ключ, а затем, через двоеточие, указывается значение. И ключ, и значение могут быть любым объектом языка Python. Кстати, пары ключ/значение необязательно писать на разных строках:

Пример (python)
person = {"firstname": "Ivan", "lastname": "Ivanov", "age": 30}   

Как видите, такой способ записи словаря менее читабельный.

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

Как вы помните, в списках элементы хранятся в порядке добавления. В свою очередь, словарь пренебрегает порядком хранения элементов.

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

Пример (python)
person["firstname"] # => Ivan 

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

Чтобы понять, как динамически добавлять элементы в словарь, рассмотрим следующий пример:

Пример (python)
person = {"firstname": "Ivan",
          "lastname": "Ivanov",
          "age": 30,}
print(person)
person["id"] = 1;
print(person) 

Как видите, чтобы добавить новый элемент в словарь, необходимо в квадратных скобках указать ключ и присвоить ему значение.

Допустим, нам необходимо посчитать количество определенных букв в заданной фразе:

Пример (python)
word = "словарь - это не список"
letters = {"а": 0, "е": 0, "и": 0, "о": 0}

for letter in word:
    if letter in letters:
        letters[letter] = letters[letter] + 1
    
print(letters) 

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

Пример (python)
word = "словарь - это не список"
letters = {}

for letter in word:
    if letter in letters:
        letters[letter] += 1
    else:
        letters[letter] = 1
    
print(letters)  

Мы добавили ветку else, которая будет выполняться, если ключа letter нет в словаре и заменили строку, в которой увеличивалось значение на эквивалентную. Давайте еще более упростим наш код, используя оператор not in:

Пример (python)
for letter in word:
    if letter not in letters:
        letters[letter] = 0
    letters[letter] += 1 

И это еще не все. Для таких случаев был специально придуман метод setdefault():

Пример (python)
for letter in word:
    letters.setdefault(letter, 0)
    letters[letter] += 1 

Таким образом мы уменьшили объем кода практически в два раза, он стал более читабельным и проще будет поддерживаться в дальнейшем.

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

В следующем уроке познакомимся с другим способом создания словарей и списков в Python.

Тест

Две секундочки...

Похожие уроки Codebra

@codebra_official
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Итоги раздела «Структуры данных в Python»Знакомство с Python
Типы данных в PythonЗнакомство с Python
Введение в раздел «Структуры данных в Python»Знакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Списки в PythonЗнакомство с Python
Переменные, комментарии и типы данных в PHPКурс по PHP
Первое знакомство с PythonЗнакомство с Python
Пользовательские функции в PHPКурс по PHP
Погружение в PythonЗнакомство с Python
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию и компьютерной безопасности. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Пентесту Active Directory, Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

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

Удачи в обучении!

Закрыть окно