Помогите с домашкой по Python, иначе пострадает мой монитор!

Вы работаете секретарем и вам постоянно приходят различные документы. Вы должны быть очень внимательны, чтобы не потерять ни один документ. Каталог документов хранится в следующем виде:

documents = [
    {"type": "passport", "number": "2207 876234", "name": "Василий Гупкин"},
    {"type": "invoice", "number": "11-2", "name": "Геннадий Покемонов"},
    {"type": "insurance", "number": "10006", "name": "Аристарх Павлов"}]

Перечень полок, на которых находятся документы хранится в следующем виде:

directories = {
    '1': ['2207 876234', '11-2'],
    '2': ['10006'],
    '3': []}

People_list это функция, команда, которая выведет список всех документов в формате passport "2207 876234" "Василий Гупкин". Как в эту функцию также добавить вывод полки, на которой лежит каждый документ ???

def people_list():
    for persons in documents:
        print('№:' +  persons['number'] + ', тип:' + persons['type'] + ', владелец:' + persons['name'])

Ответы (1 шт):

Автор решения: CrazyElf

Например, так. Хотя вариант я сделал довольно примитивный, по-хорошему надо сделать "обратный" словарь, где ключ - это номер книги, а значение - полка, и доставать данные оттуда просто по ключу. Ну и ещё у меня функция заточена под вариант, что один номер может быть на нескольких полках.

def get_shelf(num):
    return ','.join([k for k,v in directories.items() if num in v])

def people_list():
    for persons in documents:
        print('Полка:' + get_shelf(persons['number']) + ', №:' +  persons['number'] + ', тип:' + persons['type'] + ', владелец:' + persons['name'])

Вывод:

Полка:1, №:2207 876234, тип:passport, владелец:Василий Гупкин
Полка:1, №:11-2, тип:invoice, владелец:Геннадий Покемонов
Полка:2, №:10006, тип:insurance, владелец:Аристарх Павлов
→ Ссылка