Skip to content

Урок 12. Вкладені списки та словники

Урок 12. Вкладені списки та словники

Section titled “Урок 12. Вкладені списки та словники”

Тривалість: 45–55 хв
XP: 180

Навчитися працювати зі списками словників і словниками, які містять списки.

💡 Пояснення простою мовою

Section titled “💡 Пояснення простою мовою”

Уявіть коробки в коробках. Є коробка «Будинок», у ній — коробки «Кімната1», «Кімната2», а в кожній кімнаті — коробки «Меблі», «Речі». Так само працюють вкладені структури: є список enemies, у кожному елементі — словник з ключами name, hp, damage. Щоб дістатися до потрібного значення, спочатку береш елемент за номером, а потім — за ключем.

graph TD
    A["enemies (список)"] --> B["[0] (словник)"]
    A --> C["[1] (словник)"]
    A --> D["[2] (словник)"]
    B --> E["name: Slime"]
    B --> F["hp: 20"]
    B --> G["damage: 3"]
    C --> H["name: Zombie"]
    C --> I["hp: 40"]
    C --> J["damage: 7"]
    D --> K["name: Dragon"]
    D --> L["hp: 200"]
    D --> M["damage: 25"]

🧩 Розбираємо по рядках

Section titled “🧩 Розбираємо по рядках”
enemies = [ # Створюємо СПИСОК (квадратні дужки [])
{"name": "Slime", "hp": 20, "damage": 3}, # Перший елемент — СЛОВНИК
{"name": "Zombie", "hp": 40, "damage": 7}, # Другий елемент — СЛОВНИК
{"name": "Dragon", "hp": 200, "damage": 25} # Третій елемент — СЛОВНИК
]
print(enemies[0]["name"]) # Спочатку [0] — беру перший елемент,
# потім ["name"] — беру значення ключа
for enemy in enemies: # Перебираю кожен елемент списку
print(enemy["name"], enemy["hp"]) # Для кожного ворога — його name та hp

💡 Вкладені структури — це просто комбінація списків і словників. Спершу завжди йде номер елемента [0], а потім — ключ ["hp"]. Ніколи навпаки!

enemies = [
{"name": "Slime", "hp": 20, "damage": 3},
{"name": "Zombie", "hp": 40, "damage": 7},
{"name": "Dragon", "hp": 200, "damage": 25}
]
print(enemies[0]["name"])
for enemy in enemies:
print(enemy["name"], enemy["hp"])

🎒 Список усередині словника

Section titled “🎒 Список усередині словника”
hero = {
"name": "Marko",
"hp": 100,
"inventory": ["sword", "potion", "key"]
}
print(hero["inventory"][0])
  1. Створи 4 ворогів.
  2. Виведи Slime — 20 HP тощо.
  3. Додай кожному level.
  4. Знайди ворога з найбільшим HP без max().

Створи:

dungeon = {
"name": "Dark Cave",
"enemies": [],
"treasures": []
}

Заповни даними та красиво виведи вміст.

Створи 5 монстрів. Порахуй їх кількість і сумарний HP, а потім випадково вибери одного:

import random
enemy = random.choice(enemies)

Марко впевнено читає конструкції на кшталт enemies[0]["hp"] і перебирає вкладені дані.

Створи маленьку базу героя та 5 монстрів.

  • Що означає enemies[0]["name"]? Які два кроки тут є?
  • Як отримати HP третього ворога?
  • Чи можна змінити enemies[1]["hp"] напряму?
  • Як перебрати всіх ворогів і вивести лише їхні імена?