Что такое массив, словарь

Массив — это структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу. Задается через []. Запись вида q = [] означает, что в переменной q лежит массив без элементов. Если же q = [2,5,7,4,9] - то в нашем массиве лежит 5 элементов - это длина массива. Индексы элементов, их адрес в массиве, начинаются с 0. Таким образом индекс элемента “2” будет 0, а индекс элемента “4” в нашем массиве - 3.

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

Запись вида s = {} означает, что в переменной s лежит словарь, не содержащий элементов. Мы можем положить туда пару ключ-значение, или даже несколько: s = {"ключ1":"значение1", "ключ2":"значение2","ключ3":"значение3"} Каждый ключ и значение заключаются в кавычки, между ключом и значением ставится двоеточие, а пары ключ-значение разделяются запятой.

Массивы и словари могут быть вложенными. Рассмотрим пример:

радуга = [красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый] - это массив.

Если мы запишем

радуга = {"каждый":"красный","охотник":"оранжевый","желает":" желтый","знать":"зеленый","где":"голубой","сидит":"синий","фазан":"фиолетовый"}

- то у нас получится словарь.

Если же мы внимательно присмотримся к радуге, то заметим, например, что голубой цвет у нас не однородный, а состоит из бирюзового, светло-голубого и темно-голубого цвета. Запишем: голубой = [бирюзовый,светло-голубой, темно-голубой]. А теперь вложим наш массив “голубой” в словарь “радуга”:

радуга = {"каждый":"красный","охотник":"оранжевый","желает":"желтый","знать":"зеленый","где":["бирюзовый","светло-голубой", "темно-голубой"],"сидит":"синий","фазан":"фиолетовый"}

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

В словарях адресация идет по ключу. Значит, адресом массива [бирюзовый,светло-голубой, темно-голубой] будет являться ключ “где”.

А в массивах адресом является индекс, значит у элемента “бирюзовый” адресом будет 0.

Собираем все вместе: ["где"][0] - вот адрес элемента “бирюзовый”

Как работать с адресацией (JSON)

При получении ответов от сторонних сервисов через API - чаще всего мы получаем JSON, представляющий из себя словарь. Зачастую встает задача сохранить в переменную какое-то значение из этого словаря.

Лучше всего можно понять принцип адресации при работе с JSON на примере. {"suggestions": [{"value": "Белорусский рубль", "unrestricted_value": "Белорусский рубль", "data": {"code": "933", "strcode": "BYN", "name": "Белорусский рубль", "country": "Беларусь"}}]}

Здесь мы имеем словарь, содержащий одну пару ключ-значение suggestions - ключ для массива [{"value": "Белорусский рубль", "unrestricted_value": "Белорусский рубль", "data": {"code": "933", "strcode": "BYN", "name": "Белорусский рубль", "country": "Беларусь"}}]

В значении по ключу suggestions лежит массив, имеющий только один элемент - это словарь: {"value": "Белорусский рубль", "unrestricted_value": "Белорусский рубль", "data": {"code": "933", "strcode": "BYN", "name": "Белорусский рубль", "country": "Беларусь"}} suggestions|0 - ключ для первого (и единственного) элемента массива {"value": "Белорусский рубль", "unrestricted_value": "Белорусский рубль", "data": {"code": "933", "strcode": "BYN", "name": "Белорусский рубль", "country": "Беларусь"}}

suggestions|0|value - ключ для значения "Белорусский рубль"

{"suggestions": [{"value": "Белорусский рубль", "unrestricted_value": "Белорусский рубль", "data": {"code": "933", "strcode": "BYN", "name": "Белорусский рубль", "country": "Беларусь"}}]}

Самый длинный ключ в этом JSON: suggestions|0|data|strcode - ключ для значения BYN

{"suggestions": [{"value": "Белорусский рубль", "unrestricted_value": "Белорусский рубль", "data": {"code": "933", "strcode": "BYN", "name": "Белорусский рубль", "country": "Беларусь"}}]}

Ключи разделяются вертикальной чертой. Если в JSON есть массив, то доступ к его элементу идет по номеру, начиная с 0 и также записывается через вертикальную черту. Нумерация в массиве идет с 0

В адресации числа приравниваются к строкам и наоборот. То есть равнозначно '6' и 6.

Помимо ответов по API, массивы и словари могут использоваться для удобного хранения данных.

К примеру, вам необходимо ограничить круг лиц, имеющих доступ к определенному разделу бота. Вы можете сохранить список их ID в массив, положив его в общую переменную проекта и в условиях блоков или стрелок проверяете вхождение id пользователя в этот массив.

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

Временами возникает задача изменить какой-либо массив или словарь. Функции, описанные в этой статье созданы именно для этого. Большинство методов, описанных ниже, работают и с массивами, и со словарями.

Last updated