-
Notifications
You must be signed in to change notification settings - Fork 0
/
for_dict_challenges.py
146 lines (122 loc) · 4.71 KB
/
for_dict_challenges.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# Задание 1
# Дан список учеников, нужно посчитать количество повторений каждого имени ученика.
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]
counter = {}
for student in students:
if student['first_name'] in counter:
counter[student['first_name']] += 1
else:
counter[student['first_name']] = 1
for k, v in counter.items():
print(f"{k}: {v}")
# Пример вывода:
# Вася: 1
# Маша: 2
# Петя: 2
# Задание 2
# Дан список учеников, нужно вывести самое часто повторящееся имя.
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
]
counter = {}
for student in students:
if student['first_name'] in counter:
counter[student['first_name']] += 1
else:
counter[student['first_name']] = 1
print(f"Самое частое имя среди учеников: {max(counter, key=counter.get)}")
# Пример вывода:
# Самое частое имя среди учеников: Маша
# Задание 3
# Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
school_students = [
[ # это – первый класс
{'first_name': 'Вася'},
{'first_name': 'Вася'},
],
[ # это – второй класс
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
]
]
count_list = []
for klas in school_students:
counter = {}
for student in klas:
if student['first_name'] in counter:
counter[student['first_name']] += 1
else:
counter[student['first_name']] = 1
count_list.append(counter)
for c in count_list:
print(f"Самое частое имя в классе {count_list.index(c)+1}: {max(c, key=c.get)}")
# Пример вывода:
# Самое частое имя в классе 1: Вася
# Самое частое имя в классе 2: Маша
# Задание 4
# Для каждого класса нужно вывести количество девочек и мальчиков в нём.
school = [
{'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
{'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
]
is_male = {
'Маша': False,
'Оля': False,
'Олег': True,
'Миша': True,
}
counter = []
for klas in school:
counter_dic = {'class': klas['class'], 'female': 0, 'male': 0}
for student in klas['students']:
if is_male[student['first_name']]:
counter_dic['male'] += 1
else:
counter_dic['female'] += 1
counter.append(counter_dic)
for klas in counter:
print(f"В классе {klas['class']} {klas['female']} девочки и {klas['male']} мальчика.")
# Пример вывода:
# В классе 2a 2 девочки и 0 мальчика.
# В классе 3c 0 девочки и 2 мальчика.
# Задание 5
# По информации о учениках разных классов нужно найти класс, в котором больше всего девочек и больше всего мальчиков.
school = [
{'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
{'class': '3c', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
{'class': '3b', 'students': [{'first_name': 'Оля'}, {'first_name': 'Оля'}, {'first_name': 'Оля'}]},
{'class': '2d', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
]
is_male = {
'Маша': False,
'Оля': False,
'Олег': True,
'Миша': True,
}
counter = []
for klas in school:
counter_dic = {'class': klas['class'], 'female': 0, 'male': 0}
for student in klas['students']:
if is_male[student['first_name']]:
counter_dic['male'] += 1
else:
counter_dic['female'] += 1
counter.append(counter_dic)
fem_max = max(counter, key=lambda x: x['female'])
male_max = max(counter, key=lambda x: x['male'])
print(f"Больше всего мальчиков в классе {male_max['class']}")
print(f"Больше всего девочек в классе {fem_max['class']}")
# Пример вывода:
# Больше всего мальчиков в классе 3c
# Больше всего девочек в классе 2a