Работа с массивами и словарями

Работа в Salebot с такими типами данных как словарь и массив

API чаще всего возвращает JSON и временами возникает задача изменить его. Функции, описанные в этой статье созданы именно для этого.

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

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

Адресация

Лучше всего можно понять принцип адресации при работе с JSON на примере.

{"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 - ключ для значения "Белорусский рубль"

Самый длинный ключ в этом JSON:

suggestions|0|data|strcode - ключ для значения BYN

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

Нумерация в массиве идет с 0

Нумерация в массиве идет с 0

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

Разницы между словарем и массивом нет. Массив является частью словаря или если в массиве находятся словари. Раздельные рпимеры для массива и словаря примеры сделаны для удобства понимания.

Получение элемента массива или словаря

get - получение элемента массива или словаря. 2 параметра. Словарь или массив и ключ для поиска. Возвращает найденное значение.

Если ключ не найден, то вернется None

Пример со словарем:

s = {"1": 123, "2": 234, "q": {"w": "e"}} q = get(s, 'q')

Пример с массивом:

Запись значения в массив или словарь

set - создать новый массив или словарь с измененным значением. 3 параметра. Словарь(массив), ключ(индекс) и значение для записи. Метод возвращает изменённую строку.

Метод не меняет исходную переменную!

Пример со словарем:

Этот код заменяет значение по ключу q. Результатом будет: {"1":123,"2":234,"q":"text"}

Пример с массивом:

Данные по умолчанию вставляются как строки, если вам надо вставить массив или словарь, передайте дополнительный парамтер True. Он означает, что вы вставляете JSON.

Проверка наличия ключа

exist_key - проверка наличия ключа в словаре. Два параметра: словарь и ключ для поиска.

Возвращаемое значение True или False, в зависимости найден ключ или нет.

Пример использования:

s = {"1": 123, "2": 234, "q": {"w": "e"}} q = if(exist_key(s, 'q'), 'Найдено', 'Еще строка')

Проверка наличия элемента в массиве

in_array - проверка наличия элемента в массиве. Для параметра: массив и значение для поиска.

Возвращаемое значение True или False, в зависимости найдено значение или нет.

Пример использования:

s = ["Вася", "Петя", "Лена"] q = if(in_array(s, 'Аня'), 'Найдено', 'Еще строка')

Длинна массива

arr_len - определение длинны массива. Принимает один параметр - число. Возвращает число.

Пример использования:

s = ["Вася", "Петя", "Лена"] q = if(arr_len(s) > 5, 'Группа укомплектована', 'Присоединяйтесь в наши ряды!')

Вставка элемента в конец массива

append - вставка элемента в конец массива. Два параметра: массив и вставляемый элемент. Возвращает массив, в который добавлено значение в конец. Исходная строка не меняется.

Пример использования:

s = ["Вася", "Петя", "Лена"] q = append(s, 'Никита')

В переменной s в результате будет находиться ["Вася", "Петя", "Лена"], а в q ["Вася", "Петя", "Лена", "Никита"]

Данные по умолчанию вставляются как строки, если вам надо вставить массив или словарь, передайте дополнительный парамтер True. Он означает, что вы вставляете JSON.

Вставка значения в определенную позицию массива

insert - вставка элемента в определенную позицию массива. Три параметра: массив, позиция для вставки, число. Возвращает массив, в который добавлено значение в указанную позицию. Исходная строка не меняется.

s = ["Вася", "Петя", "Лена"] q = insert(s, 1, 'Никита')

В переменной s в результате будет находиться ["Вася", "Петя", "Лена"], а в q ["Вася", "Никита", "Петя", "Лена"]

Данные по умолчанию вставляются как строки, если вам надо вставить массив или словарь, передайте дополнительный парамтер True. Он означает, что вы вставляете JSON.

Удаление из массива или словаря

По индексу или ключу

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

Пример со словарем:

Пример с массивом:

По значению

remove - удаление значения из массива. Принимает два параметра: массив и значение, которое необходимо удалить из массива. Возвращает измененный массив, исходную строку не меняет.

Позиция элемента в массиве

index - позиция элемента в массиве. Принимает два параметра: массив и значение, позицию которого нужно вывести. Если элемента нет в массиве, вернет -1.