def returnBook(self, name): try: book = super().searchByName(name) isbn = list(filter(lambda x: x[0] == book, self.booksissued))[0][1] #checking for correlation between self.bookissued and #Library.lended_book_data to extract rack value. for i in self.booksissued: if i[0] == book: for j in Librarian.lended_book_data.get(book): if j[0] == isbn: rack = j[1] #return book and update member variables. Catalog._addBookItem(self, book, isbn, rack) print(f"Book '{book}' returned.\n") #updating variables :-> self.booksissued.remove((book, isbn)) self.issuedbookcount -= 1 self.bookitems.remove(isbn) #updating Librarian.lended_book_data for i in list(Librarian.lended_book_data.keys()): #remove individual lended bookitem data from dictionary. try: lis = Librarian.lended_book_data.get(book) for j in lis: if isbn == j[0]: Librarian.lended_book_data[book] = list( filter(lambda x: x[0] != isbn, lis)) # remove book from dictionary if all the bookitems are returned. if len(Librarian.lended_book_data.get(book)) == 0: Librarian.lended_book_data.pop(i) except TypeError: return except IndexError: print(f"{self.name},'{book}' is not in your inventory.\n")