Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Задание 5
- # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков.
- school = [
- {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
- {'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
- {'class': '4d', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'},{'first_name': 'Олег'}]},
- ]
- is_male = {
- 'Маша': False,
- 'Оля': False,
- 'Олег': True,
- 'Миша': True,
- }
- # Пример вывода:
- # Больше всего мальчиков в классе 3c
- # Больше всего девочек в классе 2a
- print("Task #5:")
- # решение:
- from operator import itemgetter
- school_values = [list(val.values()) for val in school]
- genders_count_by_class = []
- for idx, classes in enumerate(school_values):
- for data in classes:
- if type(data) == str:
- class_name = data
- genders_count_by_class.append({"class": class_name,"males": 0, "females": 0})
- else:
- students_count = len(data)
- key_name = list(data[0].keys())[0]
- student_names = [data[i][key_name] for i in range(students_count)]
- for student_name in student_names:
- if is_male[student_name]:
- genders_count_by_class[idx]['males'] += 1
- else:
- genders_count_by_class[idx]['females'] += 1
- classes_sorted_by_male = sorted(genders_count_by_class, key=itemgetter('males'), reverse=True)
- classes_sorted_by_female = sorted(genders_count_by_class, key=itemgetter('females'), reverse=True)
- print(f"Больше всего мальчиков в классе {classes_sorted_by_male[0]['class']}")
- print(f"Больше всего девочек в классе {classes_sorted_by_female[0]['class']}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement