Как определить вхождение номера из списка в значение словаря?
book = [
{'type': 'classic', 'number': '1', 'name': 'Руслан и Людмила'},
{'type': 'classic', 'number': '4', 'name': 'Петербургский ростовщик'},
{'type': 'roman', 'number': '3', 'name': 'Преступление и наказание'}
]
shelf = {
'1': ['3'],
'2': ['4', '1'],
}
Нужно определить в каких ячейках находятся книги с определенными номерами. На печать вывести всю информацию по книге и номер ячейки.
Думаю, что сначала нужно пройти циклом по строкам book 'rating', полученные значения проверить на вхождение словаря shelf. Пока не пойму как сделать.
Сделал функцию, которая введенное значение проверяет на наличие в словаре shelf, но в ней номер нужно ввести руками.
# def get_shelf(document_number):
# for key in directories:
# if document_number in directories[key]:
# return key
# return "Документ не найден в базе"
#
# document_number = input("Введите номер документа: ")
# print(get_shelf(document_number))
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Список книг превратить в словарь, где ключом будет номер книги, остальное будет просто.
Пример:
book = [
{'type': 'classic', 'number': '1', 'name': 'Руслан и Людмила'},
{'type': 'classic', 'number': '4', 'name': 'Петербургский ростовщик'},
{'type': 'roman', 'number': '3', 'name': 'Преступление и наказание'}
]
num_by_book = {book['number']: book for book in book}
shelf = {
'1': ['3'],
'2': ['4', '1'],
}
for num, book_nums in shelf.items():
print(num)
for book_num in book_nums:
book = num_by_book[book_num]
print(f' {book["name"]}')
# 1
# Преступление и наказание
# 2
# Петербургский ростовщик
# Руслан и Людмила