Advertisement
krein

task #5 solution

Sep 21st, 2019
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.90 KB | None | 0 0
  1. # Задание 5
  2. # По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков.
  3. school = [
  4.   {'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
  5.   {'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
  6.   {'class': '4d', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'},{'first_name': 'Олег'}]},
  7. ]
  8. is_male = {
  9.   'Маша': False,
  10.   'Оля': False,
  11.   'Олег': True,
  12.   'Миша': True,
  13. }
  14. # Пример вывода:
  15. # Больше всего мальчиков в классе 3c
  16. # Больше всего девочек в классе 2a
  17.  
  18. print("Task #5:")
  19. # решение:
  20. from operator import itemgetter
  21.  
  22. school_values = [list(val.values()) for val in school]
  23. genders_count_by_class = []
  24.  
  25. for idx, classes in enumerate(school_values):
  26.   for data in classes:
  27.     if type(data) == str:
  28.       class_name = data
  29.       genders_count_by_class.append({"class": class_name,"males": 0, "females": 0})
  30.     else:
  31.       students_count = len(data)
  32.       key_name = list(data[0].keys())[0]
  33.       student_names = [data[i][key_name] for i in range(students_count)]
  34.       for student_name in student_names:
  35.         if is_male[student_name]:
  36.           genders_count_by_class[idx]['males'] += 1
  37.         else:
  38.           genders_count_by_class[idx]['females'] += 1
  39.  
  40. classes_sorted_by_male = sorted(genders_count_by_class, key=itemgetter('males'), reverse=True)
  41. classes_sorted_by_female = sorted(genders_count_by_class, key=itemgetter('females'), reverse=True)
  42. print(f"Больше всего мальчиков в классе {classes_sorted_by_male[0]['class']}")
  43. print(f"Больше всего девочек в классе {classes_sorted_by_female[0]['class']}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement