Вывести словарь из списка по ключу

Помогите разобраться с кодом не получается вывести только Владелец документа: Аристарх Павлов

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': []}
def p():
  num = input("Введите номер документа:")
    for dic in documents:
        for key,value in dic.items():
            if key == "number" and value == num:
                print(dic["name"])
            elif key == "number" and value != num:
                print("Документ не найден в базе")
    
p()

введите сюда описание изображения

Помогите, пожалуйста с кодом Задание 1 Пункт 1. Пользователь по команде «p» может узнать владельца документа по его номеру. Примеры работы:

Введите команду: p

Введите номер документа: 10006 Результат: Владелец документа: Аристарх Павлов


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

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

Вы определитесь с циклами и их областями видимости. в вашем случае работать будет так:

def p():
    num = input("Введите номер документа:")
    for dic in documents:
        for key,value in dic.items():
            if key == "number" and value == num:
                return dic["name"]
    return "Документ не найден в базе"

print(p())
→ Ссылка
Автор решения: Vitalizzare

Внутренний цикл for key, value in dic.items(): ... вам не нужен, обращайтесь к номеру документа напрямую:

def print_owner_by_doc_number():
    owner = None
    num = input("Введите номер документа: ")
    for dic in documents: 
        if dic["number"] == num: 
            owner = dic["name"]
            break
    if owner is None:
        print(f'Документ №"{num}" в базе не найден')
    else:
        print(f'Владелец документа №"{num}": {owner}')


def main():
    help = '\n'.join([
        'Доступные комманды:',
        '   p - по номеру документа найти владельца',
        '   h - показать справочное сообщение',
        '   q - завершить работу'])
    print(help)
    while True:
        command = input('Введите команду: ')
        if command == 'p':
            print_owner_by_doc_number()
        elif command == 'h':
            print(help)
        elif command == 'q':
            break


main()

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

num = ...
owners = [dic['name'] for dic in documents if dic['number'] == num]
→ Ссылка