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

Пример: array=[1,2,3,4] или array1=["мама","папа","сын","дочь"]
Пример обращения к элементу массива: array[1] (возвращает значение 2)
Словарь — это структура данных, представляющая собой специально организованный набор элементов, хранящих данные. Все данные хранятся в виде пар ключ-значение. Доступ к элементам данных выполняется по ключу. Ключ в пределах одного словаря всегда должен быть уникальным, а данные (значения) при необходимости могут повторяться.
Пример: {"SLU":12345,"Name":"Мужская футболка, белая","Size":50,"Price":1000}
Пример обращения к элементу массива: dictionary["Array"] (возвращает значение 12345)
И массивы, и словари могут иметь сложные или вложенные структуры — то есть могут содержать друг друга. Например:
массив словарей: products=[{"SKU":12345,"Name":"Мужская футболка, белая","Size":50,"Price":1000},{"SKU":12346,"Name":"Мужская футболка, белая","Size":52,"Price":1000}]
Выражение s = {} означает, что переменная s содержит словарь, не содержащий элементов. В него можно поместить пару ключ-значение или даже несколько: s = {"key1":"value1", "key2":"value2","key3":"value3"} Каждый ключ и значение заключаются в кавычки, между ключом и значением ставится двоеточие, а пары ключ-значение разделяются запятыми.
Массивы и словари могут быть вложенными. Рассмотрим пример:
радуга = [красный, оранжевый, жёлтый, зелёный, светло-синий, синий, фиолетовый] — это массив.
Если мы напишем
радуга = {"every":"красный","hunter":"оранжевый","wants":"жёлтый","know":"зелёный","where":"светло-синий","sits":"синий","pheasant":"фиолетовый"}
— мы получим словарь
Если внимательно посмотреть на радугу, можно увидеть, например, что светло-синий цвет более сложный и состоит из бирюзового, светло-синего и тёмно-синего. Запишем: светло-синий = [бирюзовый, светло-синий, тёмно-синий]. Теперь вложим наш массив “blue” в словарь “rainbow”:
rainbow = {"first_color":"красный","second_color":"оранжевый","third_color":"жёлтый","forth_color":"зелёный","sixth_color":"синий","last_color":"фиолетовый"}
Итак, как указать адрес элемента, например “turquoise”?
А в массивах обращение выполняется по индексу, поэтому адрес элемента "turquoise" равен 0.
Подведём итог: ["where"][0] — это адрес элемента "turquoise".


Как работать с обращением (JSON)
При получении ответов от сторонних сервисов через API мы чаще всего получаем JSON, который представляет собой словарь. Очень часто нам нужно сохранить конкретное значение из этого словаря в переменную.
Лучше всего понять принцип обращения в JSON можно на примере:{"suggestions": [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "ОАЭ"}}]}
Здесь у нас словарь, содержащий одну пару ключ-значение suggestions — ключ для массива: [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "ОАЭ"}}]
Значением suggestions ключа является массив всего с одним элементом — словарём: {"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "ОАЭ"}} suggestions|0 — это ключ первого (и единственного) элемента массива.{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "ОАЭ"}}
suggestions|0|value — это ключ к значению "Белорусский рубль"
{"suggestions": [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "ОАЭ"}}]}
Самый длинный путь ключа в этом JSON: suggestions|0|data|strcode — это ключ для AED

{"suggestions": [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "ОАЭ"}}]}
Ключи разделяются вертикальной чертой. Если JSON содержит массив, обращение к его элементам выполняется по индексу, начиная с 0, и тоже записывается через вертикальную черту. Индексация массива начинается с 0.
В обращении числа трактуются так же, как строки, и наоборот. Например, '6' и 6 считаются равными.
Помимо ответов API, массивы и словари также можно использовать для удобного хранения данных.
Например, если нужно ограничить доступ к определённому разделу бота для некоторых пользователей, можно сохранить их ID в массиве, поместить его в глобальную переменную проекта и использовать в условиях блоков или логике стрелок, чтобы проверить, содержится ли ID пользователя в массиве.
Другой пример — когда нужно хранить количество очков каждого игрока в командной игре. Для этого можно использовать словарь, где ключи — это ID пользователей, а значения — их очки.
Иногда необходимо изменить массив или словарь. Функции, описанные в этой статье, предназначены именно для этого. Большинство методов, описанных ниже, работают и с массивами, и со словарями.
Работа с массивами
Как создать массив
Создание массива — объявление массива
array_name = []
Как очистить массив
Очистка массива по сути ничем не отличается от объявления пустого массива:
array_name = []
Как обратиться к элементу массива
Как заменить значение в массиве
Пример
Пример:
Чтобы заменить значение определённого элемента массива, используйте следующий синтаксис: array_name[index] = value

Ответ:

Как проверить, содержится ли элемент в массиве
Описание
in_array(mass, value) — чтобы проверить, существует ли элемент в массиве.
Параметры: ! mass - массив ! value - значение для поиска
Возвращает True или False в зависимости от того, найдено значение или нет.
Как узнать длину массива
Описание
arr_len(mass) — чтобы узнать длину массива
Параметр: ! mass - массив
Результат: возвращает число — длину массива.
Будьте внимательны при передаче параметров функции! Если вызвать без параметров, она вернёт 0; если параметр не является ни массивом, ни словарём, вернёт -1.
Как вставить элемент в конец массива?
Описание
append(mass, element, priznak) — чтобы вставить элемент в конец массива.
Параметры:
! mass - массив ! element - элемент для вставки priznak — флаг, указывающий, является ли это массивом или словарём
Возвращает массив с добавленным в конец значением. Чтобы обновить исходный массив, используйте присваивание: mass = append(mass, element, priznak)
По умолчанию данные вставляются как строки. Если нужно вставить массив или словарь, передайте дополнительный параметр True. Это означает, что вы вставляете JSON.
Пример
Пример использования:


Пример добавления и удаления из массива:

p удаляется из массива project.pzdrПример создания массива с вложенными массивами:

Результат выполнения функции:

Как вставить значение в определённую позицию массива
Описание
insert(mass, index, value, priznak) — чтобы вставить элемент в определённую позицию массива.
Параметры: ! mass - массив ! index - позиция вставки ! value - value indicator — индикатор добавления в массив или словарь.
Результат: Возвращает массив со значением, добавленным в указанную позицию. Иными словами, чтобы добавить значение в тот же массив, используйте команду в следующем виде: mass = insert(mass, index, value, indicator)
По умолчанию данные вставляются как строки. Если нужно вставить массив или словарь, передайте дополнительный параметр True. Это означает, что вы вставляете JSON..
Пример
Пример:

Результат:
Рассмотрим более сложный пример — добавление словаря t в массив s:

В функции мы указали, что хотим добавить словарь в позицию 1. Посмотрим на результат:

Как удалить элемент из массива
del() | del | remove()
Описание
По индексу
del(mass, key) — удаляет элемент из массива по его индексу.
Параметры: ! mass - имя массива; ! key - индекс удаляемого значения
Возвращает новый массив с удалённым элементом; исходный массив остаётся без изменений. Чтобы удалить и обновить тот же массив, используйте команду в таком виде: mass = del(mass, key)
Если ваш массив содержит числа и вы хотите удалить элемент по значению, используйте функцию remove().
del name['index'] — удаление значения из массива по индексу
Параметры: ! name- имя массива; ! index- индекс удаляемого значения
По значению
remove(mass, value) — чтобы удалить значение из массив.
Параметры: ! mass - имя массива; ! value - значение для удаления из массива
Результат: Возвращает изменённый массив, оставляя исходный массив без изменений. Чтобы удалить элемент и обновить тот же массив, используйте команду в следующем виде: mass = remove(mass, key)
Как получить позицию элемента в массиве
Описание
index(mass, value)
Параметры: ! mass - имя массива ! value - значение, позицию которого нужно определить.
Если элемента нет в массиве, функция вернёт -1.
Примеры
Пример определения позиции элемента в массиве:

Давайте подробнее рассмотрим результат:

Как видим, поскольку числа 5 нет в массиве, функция вернула -1.
Как преобразовать массив в человекочитаемый текст
Описание
massive_to_text(massive, header, numbered,delimiter1,delimiter2)
Параметры:
! massive — массив, который нужно отобразить, header — заголовок, который будет отображён в начале вывода numbered — если передано какое-либо значение, элементы массива будут пронумерованы delimiter1 — символ, ставящийся в конце строки каждого элемента (по умолчанию ‘;’), delimiter2 — символ, используемый после номера элемента при включённой нумерации (по умолчанию ‘)’ )
Как исключить один массив из другого
Описание
except_arr(mas1, mas2)
Параметры:
! mas1 — массив, из которого будут исключаться элементы, ! mas2 — массив, содержащий элементы, которые нужно исключить
Как найти пересечение массивов
Описание
cross_arr(mas1, mas2)
Параметры:
! mas1 — массив для поиска в нём ! mas2 — массив, содержащий элементы для поиска
Как объединить массивы
Описание
Специальной встроенной функции для объединения массивов нет, но это легко можно сделать:
Чтобы объединить массивы, выполните конкатенацию строк, а затем замените '][' на запятую ','
Как суммировать элементы массива
Описание
sum_array(array)
Параметры:
массив — массив, элементы которого нужно суммировать
Внимание! Функция работает с массивами определённого формата.
Допустимые форматы: - [1,2,3,4] или ‘[1,2,3,4]’. Если массив содержит числа, представленные как строки, их нужно заключать в двойные кавычки — например, [1,2,3,”-4”]. Если массив содержит буквенные строки, вычисление завершится ошибкой.
Пример неправильного использования: mas = [1,2,3,"a"] result = sum_array(mas)
Это приведёт к ошибке: массив содержит неподдерживаемые элементы
Как перемешать элементы массива
Для сортировки массивов и словарей
sort() | sort_by_value()
Описание
Сортировка в массиве или словаре
sort(mass, b) — сортирует массив по значению, а словарь по ключу
Параметры:
! mass — массив/словарь b — порядок сортировки (False — по возрастанию (по умолчанию), True — по убыванию)
Сортировка словаря по его значению
sort_by_value(dict, b) - сортирует словарь по значениям.
Параметры: ! dict— словарь b — порядок сортировки (False — по возрастанию (по умолчанию), True — по убыванию)
Пример
Пример сортировки массива по убыванию и словаря по возрастанию:


Сортировка словаря по значениям:


Преобразование массива/словаря в кнопки
tools_make_button_str_checker() | tools_check_user_input()
Описание
Преобразование массива/словаря в кнопки
tools_make_button_str_checker(values_list, key, in_line, button_type, checker_with_numbers)
Параметры:
! values_list — массив строк или словарей, данные из которых будут использованы для построения клавиатуры или нумерованного списка
key — ключ, по которому будет выполняться выбор из массива словарей
in_line — количество кнопок в строке (по умолчанию: 1)
button_type — тип кнопок (по умолчанию: reply keyboard). Возможные значения: 0 - reply keyboard, 1 - inline keyboard (кнопки в тексте)
checker_with_numbers — нужно ли добавлять номера кнопок в массив "checker". Возможные значения: 0 - не добавлять номера, 1 - добавлять номера (по умолчанию: 1 — добавлять номера)
Результат функции — словарь вида:
{"numbered_list":"1. Футболки\n2. Шорты\n3. Носки\n4. Кепки\n","buttons":[{"type":"inline","text":"Футболки","line":0,"index_in_line":0},{"type":"inline","text":"Шорты","line":0,"index_in_line":1},{"type":"inline","text":"Носки","line":1,"index_in_line":0},{"type":"inline","text":"Кепки","line":1,"index_in_line":1}],"checker":"Футболки;1;Шорты;2;Носки;3;Кепки;4;"}
Затем значения словаря можно подставить в поля конструктора:


Получение значения словаря на основе выбора клиента
tools_check_user_input(values_list, user_input, key, return_key)
Параметры:
! values_list — массив строк или словарей, данные из которых будут использованы для построения клавиатуры или нумерованного списка Пример словаря: [{"text":"Футболки","price":100},{"text":"Шорты","price":150},{"text":"Носки","price":20},{"text":"Кепки","price":50}] ! user_input — значение, введённое пользователем, одно из значений values_list Пример значения: Кепки key — ключ, используемый для выбора из массива словарей values_list Пример ключа: text return_key — значение, возвращаемое для указанного ключа из values_list Пример возвращаемого значения: price
Пример
Давайте разберём использование функции на примере корзины покупок:
1.Определите массив и преобразуйте его в нумерованный список, кнопки и список возможных значений (для мессенджеров без кнопок) с помощью функции tools_make_button_str_checker().


2.Используйте полученные значения buttons и numbered_list, чтобы обеспечить выбор товара:

3.Используйте checker со списком возможных значений, чтобы проверить ввод клиента:

4.Наконец, покажите клиенту цену выбранного товара. Это удобно сделать с помощью функции tools_check_user_input()

Выбор данных из массива
Описание
array_slice(array, start_index, end_index)
Параметры:
! массив — массив ! start_index — начало среза end_index — конец среза (по умолчанию: до конца)
Пример
Давайте выберем подмассив, начиная с 1-го элемента:

res будет ["Шорты", "Носки", "Кепки"]
Ещё один пример выбора подмассива с 0-го по 2-й элемент массива:

res будет ["Футболки", "Шорты"]
Распаковка элементов массива
Функция
unpack_list(array, var_name) - этот метод проходит по массиву и создаёт отдельную переменную для каждого элемента массива с именами вроде var1, var2, var3 и т. д.
! array - обязательный параметр, массив элементов
var_name - необязательный параметр, строка. Если указан, он используется для именования распакованных элементов. Примеры:
Если var_name указан, имена переменных формируются с использованием var_name
var_name должен соответствовать правилам именования переменных.
Пример
Пример 1:
array1 = ["one", "two", "three"]
ans1 = unpack_list(array1)
Результат — созданы отдельные переменные:
var1 = 'one'
var2 = 'two'
var3 = 'three'
Пример 2:
array2 = ["one", "two", "three"]
var_name = 'custom'
ans2 = unpack_list(array2, var_name)
Результат - созданы отдельные переменные:
custom1 = 'one'
custom2 = 'two'
custom3 = 'three'
Как вернуть список без повторяющихся элементов
Описание
remove_duplicates(array) - возвращает список без повторяющихся элементов.
! array - обязательный параметр. Исходный список элементов с дубликатами.
Пример
Пример:
arr = [1, 2, 5, 1, 5, 3]
new_arr = remove_duplicates(arr)
Результат - список [1, 2, 5, 3] будет присвоен переменной new_arr.
Как создать словарь
Как очистить словарь
Как получить значение словаря по ключу
Примеры
Пример работы со словарём:
В данном конкретном случае мы обращаемся к значению по ключу "a". Чтобы получить значение из словаря по определённому ключу, используйте следующий формат: name_dictionary["key"]

Ответ:

Как получить список ключей из словаря
Как получить список значений из словаря
Как получить значения из списка словарей по указанному ключу
Описание
get_values_by_key(data, key) - позволяет получить значения из списка словарей по указанному ключу. Возвращает список значений.
Как заменить значение в словаре
Описание
name['key'] = value - замена значения элемента словаря по указанному ключу. Если указан несуществующий ключ, будет добавлен новый элемент словаря.
Описание
Пример:
Чтобы заменить значение конкретного элемента массива, напишите присваивание вида array_name[index] = value или dictionary_name[key] = value

Ответ:

Как добавить значение в словарь
Описание
dictionary_name['key'] = 'value' - добавление нового значения в словарь.
Если ключа раньше не было, будет добавлена новая пара ключ–значение; в противном случае значение по указанному ключу будет заменено.
Как проверить, существует ли ключ в словаре
Описание
exist_key(mass, key) - чтобы проверить, существует ли ключ в словаре.
Параметры:
mass - словарь
key - ключ для поиска
Возвращает True или False в зависимости от того, найден ли ключ.
Как проверить позицию ключа в словаре
Описание
key_index(mass, key) - чтобы проверить позицию ключа в словаре.
Параметры: mass - словарь key - Ключ для поиска.
Позиция в словаре отсчитывается от 0. Таким образом, первый элемент — 0, второй элемент — 1 и так далее.
Как получить количество элементов в словаре
Описание
arr_len(mass) - чтобы определить длину словаря.
Параметр: mass - словарь
Результат: Возвращает число — длину словаря.
Будьте внимательны When passing a parameter to the function: if the function is called without parameters, it returns 0; if the parameter is not a list or a dictionary, it returns -1.
Как удалить элемент из словаря
Описание
По индексу или ключу
del(mass, key) - чтобы удалить элемент из списка по индексу или из словаря по ключу. Принимает два параметра: список/словарь и индекс/ключ для удаления. Возвращает изменённый словарь или список без изменения исходного объекта.
Если значения в списке или словаре являются числами, используйте функцию remove() для удаления элемента.
Пример кода для копирования
Пример со словарём
s={"1":123, "2":234, "q":{"w":"e"}}
q=del(s,'q')
Пример с массивом
s=["John", "Ann", "Sophie"]
q=del(s, 1)
Как преобразовать словарь в удобочитаемый текст
Описание
humanize(dict, delimiter, from_i, to_i)
Параметры:
dict - имя словаря delimiter - разделитель между строками from_i - индекс элемента, с которого начинать вывод (нумерация с 0) to_i - индекс элемента, на котором заканчивать вывод (не включительно)
Для сортировки словарей
sort() | sort_by_value()
Описание
Сортировка словаря
sort(dict, b) - Сортирует список по значению, а словарь по ключу
Параметры:
! dict— словарь
b - направление сортировки (False — по возрастанию по умолчанию, True — по убыванию)
Сортировка словаря по значениям
sort_by_value(dict, b) - Сортировка словаря по значениям.
Параметры:
! dict— словарь
b - направление сортировки (False — по возрастанию по умолчанию, True — по убыванию)
Примеры
Пример: сортировка списка по убыванию и словаря по возрастанию:


Сортировка словаря по его значениям:


Пример кода для копирования
Пример: сортировка списка по убыванию и словаря по возрастанию:
array1=[5,4,0,6,3,0]
array1=sort(array1, True)
dict={"Ann":5, "John":4, "Sophie":0, "Alex":6, "Kate":3, "Harry":0}
dict=sort(dict)
Сортировка словаря по его значениям:
dict={"Ann":5, "John":4, "Sophie":0, "Alex":6, "Kate":3, "Harry":0}
dict=sort_by_value(dict)
Последнее обновление







































