Indeks po identyfikatorze
Załoga przez cały dzień pyta o ładunek po identyfikatorze: „gdzie jest CG-0045 i ile waży?”. Przeszukiwanie całej listy manifestu przy każdym pytaniu działa dla sześciu pozycji, ale prawdziwy manifest ma ich tysiące.
Zbuduj raz indeks od identyfikatora do rekordu, a potem odpowiadaj z niego na pytania.
Ukończ etap 1, aby odblokować ten etap.
Zbuduj słownik o nazwie by_id, który przypisuje każdemu identyfikatorowi ładunku jego rekord, potem wyszukaj w nim wanted i wypisz rekord:
CG-0045 | Wkłady pochłaniacza CO2 | podtrzymanie życia | 31.3 kg
Zacznij od by_id = {} i dla każdego rekordu zapisz go pod record["id"]. Wtedy by_id[wanted] to cały rekord.
Ukończ etap 1, aby odblokować ten etap.
Załoga wysyła listę zapytań zamiast jednego identyfikatora. Odpowiedz na każde z indeksu; identyfikator, którego w nim nie ma, dostaje komunikat zamiast błędu KeyError:
CG-0044 | Liofilizowane posiłki | żywność | 42.0 kg CG-0099: nie ma go w manifeście CG-0042 | Wkłady filtrów wody | podtrzymanie życia | 18.5 kg
Zbuduj by_id jak wcześniej, potem przejdź pętlą po requests i sprawdzaj każdy identyfikator przez in by_id przed odczytem.
Podpowiedzi
Tworzenie słowników
# Słowniki - pary klucz: wartość
# Tworzenie słownika
ship = {
"name": "Enterprise",
"class": "Constitution",
"crew": 430,
"active": True
}
print("Statek:", ship)
# Dostęp do wartości
print("Nazwa:", ship["name"])
print("Załoga:", ship["crew"])
# Metoda get() - bezpieczniejsza
print("Kapitan:", ship.get("captain", "Nieznany"))
# Pusty słownik
data = {}
print("Pusty:", data)
Oddziel argumenty przecinkami. Każde uruchomienie przekazuje je jako sys.argv[1:].