from dataclasses import dataclass


@dataclass
class Ksiazka:
    autor: str
    tytul: str
    rok_wydania: int
    wydawnictwo: str
    cena: float


biblioteka = []
indeks_autor = {}  # tworzymy pusty słownik

def dodaj_ksiazke(ksiazka):
    miejsce_dodania = len(biblioteka)
    biblioteka.append(ksiazka)
    # aktualizacja indeksu
    if not (ksiazka.autor in indeks_autor):  # sprawdzenie czy klucz k.autor jest w słowniku
        # gdy klucza nie ma: tworzymy wpis w słowniku dla klucza k.autor i przypisujemy mu pustą listę
        indeks_autor[ksiazka.autor] = []
    indeks_autor.get(ksiazka.autor).append(miejsce_dodania)  # dopisane miejsca dodania na koniec listy dla klucza k.autor


dodaj_ksiazke(Ksiazka('J. R. R. Tolkien', 'Hobbit', 2024, 'Wyimaginowane', 27.99))
dodaj_ksiazke(Ksiazka('J. R. R. Tolkien', 'Władca Pierścieni', 2020, 'Wyimaginowane', 56.99))
dodaj_ksiazke(Ksiazka('C. S. Lewis', 'Opowieści z Narnii', 1995, 'Konkurencyjne', 165.50))
dodaj_ksiazke(Ksiazka('Arthur C. Clarke', '2001: Odyseja kosmiczna', 1999, "Fantastyczne", 34.30))

for indeks, ksiazka in enumerate(biblioteka):
    print(f'{indeks}: {ksiazka}')

print('Stan indeksu:')
print(indeks_autor)

szukany_autor = 'J. R. R. Tolkien'
print(f'Wyszukiwanie autora {szukany_autor}')
if szukany_autor in indeks_autor:  # sprawdzenie czy klucz jest w słowniku
    for znaleziona_pozycja in indeks_autor.get(szukany_autor):  # dla wszystkich znalezionych pozycji autora...
        print(biblioteka[znaleziona_pozycja])  # ... wypisujemy dane książki
else:
    print(f'Brak książek autora {szukany_autor}.')
