Робота з масивами та словниками

Масив — це структура даних, яка зберігає набір значень (так званих елементів масиву), кожен з яких має свій індекс. Вона визначається за допомогою квадратних дужок []. Наприклад, оператор 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 = []

Як отримати доступ до елемента масиву

chevron-rightОписhashtag

name[index] - доступ до елемента масиву за індексом або за значенням

chevron-rightПрикладhashtag

Розгляньмо кілька прикладів роботи з масивами:

Приклад доступу до елемента масиву за його індексом:

Приклад отримання останнього елемента масиву:

chevron-rightПриклад коду для копіюванняhashtag

Як замінити значення в масиві

chevron-rightОписhashtag

name[index] = value - заміна елемента масиву за заданим індексом

chevron-rightПрикладhashtag

Приклад:

Щоб замінити значення певного елемента масиву, використовуйте такий синтаксис: array_name[index] = value

Відповідь:

chevron-rightПриклад коду для копіюванняhashtag

Як перевірити, чи є елемент у масиві

chevron-rightОписhashtag

in_array(mass, value) - щоб перевірити, чи існує елемент у масиві.

Параметри: ! mass - масив ! value - значення для пошуку

Повертає True або False залежно від того, знайдено значення чи ні.

chevron-rightПрикладhashtag

Приклад:

chevron-rightПриклад коду для копіюванняhashtag

Як дізнатися довжину масиву

chevron-rightОписhashtag

arr_len(mass) - щоб дізнатися довжину масиву

Параметр: ! mass - масив

Результат: Повертає число — довжину масиву.

circle-exclamation
chevron-rightПрикладhashtag

Приклад використання:

Результат:

chevron-rightПриклад коду для копіюванняhashtag

Як вставити елемент у кінець масиву?

chevron-rightОписhashtag

append(mass, element, priznak) - щоб вставити елемент у кінець масиву.

Параметри:

! mass - масив ! element - елемент для вставлення priznak - прапорець, що вказує, чи це масив або словник

Повертає масив із доданим у кінець значенням. Щоб оновити початковий масив, використовуйте присвоєння: mass = append(mass, element, priznak)

circle-exclamation
chevron-rightПрикладhashtag

Приклад використання:

Приклад додавання до масиву та видалення з нього:

У цьому прикладі елемент додається до масиву project.vibpzdr, а значення p видаляється з масиву project.pzdr

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

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

chevron-rightПриклад коду для копіюванняhashtag

Як вставити значення у певну позицію масиву

chevron-rightОписhashtag

insert(mass, index, value, priznak) - щоб вставити елемент у певну позицію масиву.

Параметри: ! mass - масив ! index - позиція вставлення ! value - value indicator - індикатор додавання до масиву або словника.

Результат: Повертає масив із доданим у вказану позицію значенням. Іншими словами, щоб додати значення до того самого масиву, використовуйте команду в такому вигляді: mass = insert(mass, index, value, indicator)

circle-exclamation
chevron-rightПрикладhashtag

Приклад:

Результат:

Розгляньмо складніший приклад — додавання словника t до масиву s:

У функції ми вказали, що хочемо додати словник у позицію 1. Розгляньмо результат:

chevron-rightПриклад коду для копіюванняhashtag

Як видалити елемент з масиву

del() | del | remove()

chevron-rightОписhashtag

За індексом

del(mass, key) - видаляє елемент з масиву за його індексом.

Параметри: ! mass - ім’я масиву; ! key - індекс значення, яке потрібно видалити

Повертає новий масив із видаленим елементом; початковий масив залишається без змін. Щоб видалити та оновити той самий масив, використовуйте команду на кшталт: mass = del(mass, key)

circle-exclamation

del name['index'] - видалення значення з масиву за індексом

Параметри: ! name- ім’я масиву; ! index- індекс значення, яке потрібно видалити

За значенням

remove(mass, value) - щоб видалити значення з масив.

Параметри: ! mass - ім’я масиву; ! value - значення, яке потрібно видалити з масиву

Результат: Повертає змінений масив, залишаючи початковий масив без змін. Щоб видалити елемент та оновити той самий масив, використовуйте команду в такому вигляді: mass = remove(mass, key)

chevron-rightПрикладиhashtag

Приклад видалення елемента за індексом:

Приклад видалення елемента масиву за його значенням:

chevron-rightПриклад коду для копіюванняhashtag

Як отримати позицію елемента в масиві

chevron-rightОписhashtag

index(mass, value)

Параметри: ! mass - ім’я масиву ! value - значення, позицію якого потрібно визначити.

Якщо елемента немає в масиві, функція поверне -1.

chevron-rightПрикладиhashtag

Приклад визначення позиції елемента в масиві:

Розгляньмо результат детальніше:

Як бачимо, оскільки числа 5 немає в масиві, функція повернула -1.

chevron-rightПриклад коду для копіюванняhashtag

Як перетворити масив на текст, зручний для людини

chevron-rightОписhashtag

massive_to_text(massive, header, numbered,delimiter1,delimiter2)

Параметри:

! massive – масив, який потрібно відобразити, header – заголовок, який буде показано на початку виводу numbered – якщо передано будь-яке значення, елементи масиву будуть пронумеровані delimiter1 – символ, що ставиться в кінці рядка кожного елемента (за замовчуванням ‘;’), delimiter2 – символ, що використовується після номера елемента при увімкненому нумеруванні (за замовчуванням ‘)’ )

chevron-rightПрикладиhashtag

Простий приклад:

У результаті масив буде відображено як нумерований список:

chevron-rightПриклад коду для копіюванняhashtag

Як виключити один масив з іншого

chevron-rightОписhashtag

except_arr(mas1, mas2)

Параметри:

! mas1 - масив, з якого елементи буде виключено, ! mas2 - масив, що містить елементи для виключення

chevron-rightПрикладиhashtag

Розгляньмо приклад:

chevron-rightПриклад коду для копіюванняhashtag

Як знайти перетин масивів

chevron-rightОписhashtag

cross_arr(mas1, mas2)

Параметри:

! mas1 - масив, у якому виконується пошук ! mas2 - масив, що містить елементи, які потрібно знайти

chevron-rightПрикладиhashtag

chevron-rightПриклад коду для копіюванняhashtag

Як об’єднувати масиви

chevron-rightОписhashtag

Немає вбудованої функції спеціально для об’єднання масивів, але це легко зробити:

Щоб об’єднати масиви, виконайте конкатенацію рядків, а потім замініть '][' на кому ','

chevron-rightПрикладиhashtag

Це приклад у полі Calculator

Це приклад роботи бота

chevron-rightПриклад коду для копіюванняhashtag

Як підсумувати елементи масиву

chevron-rightОписhashtag

sum_array(array)

Параметри:

масив - масив, елементи якого потрібно підсумувати

circle-exclamation
chevron-rightПрикладиhashtag

Результат:

chevron-rightПриклад коду для копіюванняhashtag

Як перемішати елементи масиву

chevron-rightОписhashtag

shuffle_massive(massive

Параметри:

massive - масив, елементи якого потрібно перемішати.

chevron-rightПрикладиhashtag

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

chevron-rightПриклад коду для копіюванняhashtag

Для сортування масивів і словників

sort() | sort_by_value()

chevron-rightОписhashtag

Сортування в масиві або словнику

sort(mass, b) - сортує масив за значенням, а словник — за ключем

Параметри:

! mass - масив/словник b - порядок сортування (False – зростанням (за замовчуванням), True – спаданням)

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

sort_by_value(dict, b) - сортує словник за значеннями.

Параметри: ! dict- словник b - порядок сортування (False – зростанням (за замовчуванням), True – спаданням)

chevron-rightПрикладhashtag

Приклад сортування масиву за спаданням і словника за зростанням:

результат сортування

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

результат сортування

Перетворення масиву/словника на кнопки

tools_make_button_str_checker() | tools_check_user_input()

chevron-rightОписhashtag

Перетворення масиву/словника на кнопки

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

chevron-rightПрикладhashtag

Розберімо використання функції на прикладі кошика для покупок:

1.Визначте масив і перетворіть його на нумерований список, кнопки та список можливих значень (для месенджерів без кнопок) за допомогою функції tools_make_button_str_checker().

Результат використання tools_make_button_str_checker() функції

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

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

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

chevron-rightПриклад коду для копіюванняhashtag

Вибір даних з масиву

chevron-rightОписhashtag

array_slice(array, start_index, end_index)

Параметри:

! масив - масив ! start_index - початок фрагмента end_index - кінець фрагмента (за замовчуванням: до кінця)

chevron-rightПрикладhashtag

Виберімо підмасив, починаючи з 1-го елемента:

Приклад використання array_slice()

res буде ["Shorts", "Socks", "Caps"]

Ще один приклад вибору підмасиву з 0-го до 2-го елемента масиву:

Приклад використання array_slice()

res буде ["T-shirts", "Shorts"]

chevron-rightПриклад коду для копіюванняhashtag

Розпакування елементів масиву

chevron-rightФункціяhashtag

unpack_list(array, var_name) - цей метод проходить по масиву та створює окрему змінну для кожного елемента масиву з іменами на кшталт var1, var2, var3 тощо.

! array - обов’язковий параметр, масив елементів

var_name - необов’язковий параметр, рядок. Якщо вказано, він використовується для іменування розпакованих елементів. Приклади:

Якщо var_name вказано, імена змінних формуються з використанням var_name

var_name має відповідати правилам іменування змінних.

chevron-rightПрикладhashtag

Приклад 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'

Як повернути список без повторюваних елементів

chevron-rightОписhashtag

remove_duplicates(array) - повертає список без повторюваних елементів.

! array - обов’язковий параметр. Початковий список елементів із дублікатами.

chevron-rightПрикладhashtag

Приклад:

arr = [1, 2, 5, 1, 5, 3]

new_arr = remove_duplicates(arr)

Результат - список [1, 2, 5, 3] буде присвоєно змінній new_arr.

Як створити словник

chevron-rightОписhashtag

Створення словника — оголошення словника

name_dictionary = {}

Як очистити словник

chevron-rightОписhashtag

Очищення — це не що інше, як оголошення порожнього словника.

name_dictionary = {}

Як отримати значення словника за ключем

chevron-rightОписhashtag

name[key] - отримання елемента словника за ключем

chevron-rightПрикладиhashtag

Приклад роботи зі словником:

У цьому конкретному випадку ми звертаємося до значення за ключем "a". Щоб отримати значення зі словника за певним ключем, використовуйте такий формат: name_dictionary["key"]

Відповідь:

chevron-rightПриклад коду для копіюванняhashtag

Як отримати список ключів зі словника

chevron-rightОписhashtag

dict_keys_to_array(data) - щоб отримати список ключів словника даних

chevron-rightПрикладиhashtag

Приклад: Отримати список усіх ключів словника

Відповідь:

chevron-rightПриклад коду для копіюванняhashtag

Як отримати список значень із словника

chevron-rightОписhashtag

dict_values_to_array(data) - щоб отримати список значень із словника

chevron-rightПрикладиhashtag

Приклад:

Відповідь:

chevron-rightПриклад коду для копіюванняhashtag

Як отримати значення зі списку словників за вказаним ключем

chevron-rightОписhashtag

get_values_by_key(data, key) - дозволяє отримати значення зі списку словників за вказаним ключем. Повертає список значень.

chevron-rightПрикладhashtag

Приклад: Отримання значень зі списку словників за ключем

Відповідь:

chevron-rightПриклад коду для копіюванняhashtag

Як замінити значення у словнику

chevron-rightОписhashtag

name['key'] = value - заміна значення елемента словника за вказаним ключем. Якщо вказано неіснуючий ключ, буде додано новий елемент словника.

chevron-rightОписhashtag

Приклад:

Щоб замінити значення певного елемента масиву, напишіть присвоєння на кшталт array_name[index] = value або dictionary_name[key] = value

Відповідь:

chevron-rightПриклад коду для копіюванняhashtag

Як додати значення до словника

chevron-rightОписhashtag

dictionary_name['key'] = 'value' - додавання нового значення до словника.

circle-exclamation
chevron-rightПрикладhashtag

Це приклад коду в полі калькулятора

Відповідь

chevron-rightПриклад коду для копіюванняhashtag

Як перевірити, чи існує ключ у словнику

chevron-rightОписhashtag

exist_key(mass, key) - щоб перевірити, чи існує ключ у словнику.

Параметри:

mass - dictionary

key - ключ для пошуку

Повертає True або False залежно від того, чи було знайдено ключ.

chevron-rightПрикладhashtag

Приклад використання:

chevron-rightПриклад коду для копіюванняhashtag

Як перевірити позицію ключа у словнику

chevron-rightОписhashtag

key_index(mass, key) - щоб перевірити позицію ключа у словнику.

Параметри: mass - словник key - Ключ для пошуку.

circle-info

Позиція у словнику відлічується від 0. Отже, перший елемент — 0, другий елемент — 1 і так далі.

chevron-rightПрикладhashtag

Приклад використання:

Результат:

chevron-rightПриклад коду для копіюванняhashtag

Як отримати кількість елементів у словнику

chevron-rightОписhashtag

arr_len(mass) - щоб визначити довжину словника.

Параметр: mass - dictionary

Результат: Повертає число — довжину словника.

circle-exclamation
chevron-rightПрикладhashtag

Приклад використання:

Відповідь:

Як видалити елемент зі словника

chevron-rightОписhashtag

За індексом або ключем

del(mass, key) - щоб видалити елемент зі списку за індексом або зі словника за ключем. Вона приймає два параметри: список/словник і індекс/ключ для видалення. Повертає змінений словник або список без зміни оригінального об’єкта.

circle-exclamation
chevron-rightПрикладhashtag

Приклад зі словником

Результат

Приклад із масивом

Результат

chevron-rightПриклад коду для копіюванняhashtag

Приклад зі словником

s={"1":123, "2":234, "q":{"w":"e"}}

q=del(s,'q')

Приклад із масивом

s=["John", "Ann", "Sophie"]

q=del(s, 1)

Як перетворити словник на зрозумілий для людини текст

chevron-rightОписhashtag

humanize(dict, delimiter, from_i, to_i)

Параметри:

dict - назва словника delimiter - роздільник між рядками from_i - індекс елемента, з якого почати виведення (нумерація з 0) to_i - індекс елемента, на якому завершити виведення (не включно)

chevron-rightПрикладhashtag

Розгляньмо приклад:

Відповідь

chevron-rightПриклад коду для копіюванняhashtag

Для сортування словників

sort() | sort_by_value()

chevron-rightОписhashtag

Сортування словника

sort(dict, b) - Сортує список за значенням, а словник — за ключем

Параметри:

! dict- словник

b - напрям сортування (False — за замовчуванням за зростанням, True — за спаданням)

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

sort_by_value(dict, b) - Сортування словника за значеннями.

Параметри:

! dict- словник

b - напрям сортування (False — за замовчуванням за зростанням, True — за спаданням)

chevron-rightПрикладиhashtag

Приклад: сортування списку у спадному порядку та словника у зростаючому порядку:

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

chevron-rightПриклад коду для копіюванняhashtag

Приклад: сортування списку у спадному порядку та словника у зростаючому порядку:

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