Подскажите как можно упорядочить владельцев в алфавитно порядке, а затем по порядку возрастания их номеров?
Сведения об автомобилях состоят из марки, четырехзначного номера и фамилии владельца автомобиля. Нужно вывести на экран:
• фамилии владельцев автомобилей, включая марку и номер автомобиля, в которых номера автомобилей начинаются с заданных двух цифр, упорядочив их в алфавитном порядке;
• фамилии владельцев автомобилей заданной марки, включая марку и номер автомобиля, в которых номера автомобилей начинаются с заданных двух цифр, упорядочив владельцев по порядку возрастания номеров.
Ответы (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