Робота з масивами та словниками
Масив — це структура даних, яка зберігає набір значень (так званих елементів масиву), кожен з яких має свій індекс. Вона визначається за допомогою квадратних дужок []. Наприклад, оператор q = [] означає, що змінна q містить порожній масив. Якщо q = [2, 5, 7, 4, 9], тоді масив містить 5 елементів — це його довжина. Індекси елементів, які позначають їхні позиції в масиві, починаються з 0. Отже, індекс елемента "2" дорівнює 0, а індекс елемента "4" у нашому масиві — 3.

Приклад: array=[1,2,3,4] або array1=["mother","father","son","daughter"]
Приклад доступу до елемента масиву: array[1] (повертає значення 2)
Словник — це структура даних, що представляє спеціально організований набір елементів для зберігання даних. Усі дані зберігаються у вигляді пар ключ-значення. Доступ до елементів даних здійснюється за допомогою ключа. Ключ завжди має бути унікальним у межах одного словника, тоді як дані (значення) за потреби можуть повторюватися.
Приклад: {"SLU":12345,"Name":"Men's t-shirt, white","Size":50,"Price":1000}
Приклад доступу до елемента масиву: dictionary["Array"] (повертає значення 12345)
І масиви, і словники можуть мати складні або вкладені структури — тобто вони можуть містити одне одного. Наприклад:
масив словників: products=[{"SKU":12345,"Name":"Men's t-shirt, white","Size":50,"Price":1000},{"SKU":12346,"Name":"Men's t-shirt, white","Size":52,"Price":1000}]
Вираз s = {} означає, що змінна s містить словник, який не містить елементів. У нього можна помістити пару ключ-значення або навіть кілька: s = {"key1":"value1", "key2":"value2","key3":"value3"} Кожен ключ і значення беруться в лапки, між ключем і значенням ставиться двокрапка, а пари ключ-значення розділяються комами.
Масиви та словники можуть бути вкладеними. Розгляньмо приклад:
rainbow = [red, orange, yellow, green, light blue, blue, purple] - це масив.
Якщо ми напишемо
rainbow = {"every":"red","hunter":"orange","wants":" yellow","know":"green","where":"light blue","sits":"blue","pheasant":"purple"}
- отримаємо словник
Якщо уважно придивитися до веселки, можна побачити, наприклад, що блакитний колір є складнішим і складається з бірюзового, світло-блакитного та темно-блакитного. Запишемо: light blue = [turquoise,light blue, dark blue]. Тепер вкладемо наш масив “blue” у словник “rainbow”:
rainbow = {"first_color":"red","second_color":"orange","third_color":"yellow","forth_color":"green","sixth_color":"blue","last_color":"purple"}
То як же вказати адресу елемента, наприклад “turquoise”?
А в масивах адресація здійснюється за індексом, тож адреса елемента "turquoise" — 0.
Підсумуємо це: ["where"][0] - це адреса елемента "turquoise".


Як працювати з адресацією (JSON)
Під час отримання відповідей від сторонніх сервісів через API ми найчастіше отримуємо JSON, який є словником. Дуже часто нам потрібно зберегти певне значення з цього словника у змінну.
Найкращий спосіб зрозуміти принцип адресації в JSON — розглянути приклад:{"suggestions": [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]}
Тут маємо словник, що містить одну пару ключ-значення suggestions - ключ для масиву: [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]
Значення suggestions ключа — це масив лише з одним елементом — словником: {"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}} suggestions|0 - це ключ до першого (і єдиного) елемента масиву.{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}
suggestions|0|value - це ключ до значення "Belarusian ruble"
{"suggestions": [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]}
Найдовший шлях ключа в цьому JSON такий: suggestions|0|data|strcode - це ключ для AED

{"suggestions": [{"value": "Dirham", "unrestricted_value": "Dirham", "data": {"code": "784", "strcode": "AED", "name": "Dirham", "country": "UAE"}}]}
Ключі розділяються вертикальною рискою. Якщо 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. T-shirts\n2. Shorts\n3. Socks\n4. Caps\n","buttons":[{"type":"inline","text":"T-shirts","line":0,"index_in_line":0},{"type":"inline","text":"Shorts","line":0,"index_in_line":1},{"type":"inline","text":"Socks","line":1,"index_in_line":0},{"type":"inline","text":"Caps","line":1,"index_in_line":1}],"checker":"T-shirts;1;Shorts;2;Socks;3;Caps;4;"}
Потім значення словника можна вставити у поля конструктора:


Отримання значення словника на основі вибору клієнта
tools_check_user_input(values_list, user_input, key, return_key)
Параметри:
! values_list - масив рядків або словників, дані яких використовуватимуться для побудови клавіатури або нумерованого списку Приклад словника: [{"text":"T-shirts","price":100},{"text":"Shorts","price":150},{"text":"Socks","price":20},{"text":"Caps","price":50}] ! user_input - значення, введене користувачем, одне зі значень у values_list Приклад значення: Caps key - ключ, що використовується для вибору з масиву словників values_list Приклад ключа: text return_key - значення, що повертається для вказаного ключа з values_list Приклад значення, що повертається: price
Приклад
Розберімо використання функції на прикладі кошика для покупок:
1.Визначте масив і перетворіть його на нумерований список, кнопки та список можливих значень (для месенджерів без кнопок) за допомогою функції tools_make_button_str_checker().


2.Використайте отримані значення buttons і numbered_list, щоб увімкнути вибір товару:

3.Використайте чекер списку можливих значень, щоб перевірити введення клієнта:

4.Нарешті, відобразіть клієнту ціну вибраного товару. Зручно це робити за допомогою функції tools_check_user_input()

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

res буде ["Shorts", "Socks", "Caps"]
Ще один приклад вибору підмасиву з 0-го до 2-го елемента масиву:

res буде ["T-shirts", "Shorts"]
Розпакування елементів масиву
Функція
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 - dictionary
key - ключ для пошуку
Повертає True або False залежно від того, чи було знайдено ключ.
Як перевірити позицію ключа у словнику
Опис
key_index(mass, key) - щоб перевірити позицію ключа у словнику.
Параметри: mass - словник key - Ключ для пошуку.
Позиція у словнику відлічується від 0. Отже, перший елемент — 0, другий елемент — 1 і так далі.
Як отримати кількість елементів у словнику
Опис
arr_len(mass) - щоб визначити довжину словника.
Параметр: mass - dictionary
Результат: Повертає число — довжину словника.
Будьте уважні Під час передавання параметра у функцію: якщо функцію викликано без параметрів, вона повертає 0; якщо параметр не є списком або словником, вона повертає -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)
Last updated







































