Подскажите как можно упорядочить владельцев в алфавитно порядке, а затем по порядку возрастания их номеров?

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

• фамилии владельцев автомобилей, включая марку и номер автомобиля, в которых номера автомобилей начинаются с заданных двух цифр, упорядочив их в алфавитном порядке;

• фамилии владельцев автомобилей заданной марки, включая марку и номер автомобиля, в которых номера автомобилей начинаются с заданных двух цифр, упорядочив владельцев по порядку возрастания номеров.


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

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

Как вариант:

def get_owners_by_car_num(first_two_digits, owners):
    for owner in sorted(owners, key=lambda item: item['Фамилия']):
        if (owner['Номер'] // 100) == first_two_digits:
            print('{0}\t{1}\t{2}'.format(owner['Фамилия'], owner['Марка'], owner['Номер']))


def get_owners_by_car_label_and_num(label, first_two_digits, owners):
    for owner in sorted(owners, key=lambda item: item['Номер']):
        if owner['Марка'] == label and (owner['Номер'] // 100) == first_two_digits:
            print('{0}\t{1}\t{2}'.format(owner['Фамилия'], owner['Марка'], owner['Номер']))


owners = [
    {'Марка': 'Nissan', 'Номер': 1234, 'Фамилия': 'Иванов'},
    {'Марка': 'Nissan', 'Номер': 1224, 'Фамилия': 'Петров'},
    {'Марка': 'Porsche', 'Номер': 6666, 'Фамилия': 'Богданов'},
    {'Марка': 'Porsche', 'Номер': 6654, 'Фамилия': 'Богуслав'},
    {'Марка': 'Toyota', 'Номер': 5328, 'Фамилия': 'Ткаченко'},
    {'Марка': 'Toyota', 'Номер': 5398, 'Фамилия': 'Ткач'},
    {'Марка': 'BMW', 'Номер': 9999, 'Фамилия': 'Крутов'},
    {'Марка': 'BMW', 'Номер': 9943, 'Фамилия': 'Дятлов'},
    {'Марка': 'Volvo', 'Номер': 1297, 'Фамилия': 'Роксанов'},
    {'Марка': 'Volvo', 'Номер': 1207, 'Фамилия': 'Томаш'}
]


get_owners_by_car_num(12, owners)

# Иванов  Nissan  1234
# Петров  Nissan  1224
# Роксанов    Volvo   1297
# Томаш   Volvo   1207

get_owners_by_car_label_and_num('Porsche', 66, owners)

# Богуслав    Porsche 6654
# Богданов    Porsche 6666
→ Ссылка