МІСТ — КОЛИ СПИСОК, КОЛИ СЛОВНИК
Курс: Python для аналітиків з нуля
1. ЩО НАВЧИМОСЯ РОБИТИ
Швидко обирати правильну структуру під задачу. Розуміти коли список, коли словник, коли комбінація.
Найчастіше помилка початківця — неправильна структура. Задача проста, але код складний бо структура не підходить. Навчимося обирати.
2. ТЕРМІНОЛОГІЯ
Індекс (index)Позиція елемента у списку. Починається з 0.
Ключ (key)Назва поля у словнику. Унікальна, доступ швидкий.
Ітерація (iteration)
Перебір елементів: for item in list або for key in dict
Lookup (пошук)Знайти елемент за критерієм. У словнику швидко, у списку повільно.
3. ТЕОРІЯ
3.1 Таблиця рішень
Список — коли:
Порядок важливий (журнал подій, історія)
Елементи однотипні (всі координати, всі частоти)- Доступ за позицією: "перший", "останній", "кожен другий"
Можуть бути дублікати (одна частота кілька разів)Словник — коли:
Пошук за назвою (позивний → координати)
Різнотипні дані (час, частота, сигнал, позивний)
Потрібен швидкий lookup (10000 записів, знайти конкретний)
Ключі унікальні (один позивний = одні дані)Комбінація (список словників) — коли:
Таблиця з рядками (кожен рядок = словник)
Багато записів однієї структури (журнал перехоплень)
Порядок + пошук (сортувати за часом, шукати за частотою)3.2 Дерево рішень
Питання 1: Чи порядок важливий?
- Так → йди до питання 2
- Ні → йди до питання 3
Питання 2: Чи елементи однотипні?
Так → СПИСОК (всі числа, всі рядки)
Ні → СПИСОК СЛОВНИКІВ (рядки з полями)Питання 3: Чи треба пошук за назвою?
Так → СЛОВНИК (ключ → значення)- Ні → перегляньте задачу
3.3 Приклади з радіорозвідки
Приклад 1: Журнал перехоплень
Порядок важливий (хронологія), кожен запис має кілька полів.
Рішення: список словників
journal = [Приклад 2: База позивних
Пошук за позивним, порядок неважливий, дані про кожен унікальні.
Рішення: словник
база = {Приклад 3: Історія частот
Просто список чисел, порядок важливий (послідовність перехоплень).
Рішення: список
частоти = [145.5, 433.2, 145.5, 146.0, 433.2, 145.5]Приклад 4: Налаштування програми
Ключ-значення, пошук за назвою, порядок неважливий.
Рішення: словник
config = {Приклад 5: Топ-10 частот з підрахунком
Частота → кількість, швидкий lookup, порядок неважливий.
Рішення: словник
статистика = {4. КОД З КОМЕНТАРЯМИ
Конвертація між структурами:
# Список → Словник (індекс → значення)5. РОЗБІР ПО РЯДКАХ
enumerate(список) — повертає пари (індекс, значення)
база.values() — всі значення словника (без ключів)база.items() — пари (ключ, значення) для ітерації
рядок.update(дані) — додати всі ключі з дані у рядок
sorted(items, key=lambda x: x[1]) — сортування пар за другим елементом
6. ЗАВДАННЯ 1: ОБРАТИ СТРУКТУРУ
Для кожної задачі обери: список / словник / список словників
A. Зберегти 100 координат точок перехоплення (lat, lon, час)
B. Зберегти відповідність позивний → частота (Альфа-1 → 145.5)C. Зберегти останні 50 значень сигналу для графіка
D. Зберегти налаштування програми (поріг, шлях, автозбереження)Відповіді:
A. Список словників (порядок + кілька полів)
B. Словник (пошук за позивним)
C. Список (порядок, однотипні)
D. Словник (ключ-значення, пошук за назвою)7. ЗАВДАННЯ 2: ВИПРАВИТИ СТРУКТУРУ
Код незручний через неправильну структуру:
# Погано: список списківПерепиши як список словників:
# Добре: список словників8. ЗАВДАННЯ 3: ПРАКТИКА
Маєш список частот з дублікатами:
частоти = [145.5, 433.2, 145.5, 146.0, 433.2, 145.5, 146.0]Створи словник: частота → кількість разів
Підказка: використай Counter або ручний підрахунок
from collections import Counter9. РЕФЛЕКСІЯ
Я розумію коли використовувати список
Я розумію коли використовувати словник
Я знаю коли потрібен список словників
Я вмію конвертувати між структурами
Я можу швидко обрати правильну структуру
10. ЩО ДАЛІ
Модуль 1.6: Умови та логіка — if, else, and, or
Головна думка: Порядок → список. Пошук → словник. Таблиця → список словників. Правильна структура = простий код.