forked from learnpythonru/basic_exercises
-
Notifications
You must be signed in to change notification settings - Fork 0
/
for_dict_challenges.py
130 lines (100 loc) · 3.88 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
# Задание 1
# Дан список учеников, нужно посчитать количество повторений каждого имени ученика
# Пример вывода:
# Вася: 1
# Маша: 2
# Петя: 2
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]
# ???
# Задание 2
# Дан список учеников, нужно вывести самое часто повторящееся имя
# Пример вывода:
# Самое частое имя среди учеников: Маша
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
]
list_names = list()
for dicts in students_2:
new_name = dicts['first_name']
list_names.append(new_name)
count = Counter(list_names)
count_final = dict(count)
max_val = max(count_final.values())
#final_dict = {k: v for k, v in count_final.items() if v == max_val}
#print("Самое частое имя среди учеников:")
#print(*final_dict)
print("Самое частое имя среди учеников:")
for name, counter in count_final.items():
if counter == max_val:
print(name)
# Задание 3
# Есть список учеников в нескольких классах, нужно вывести самое частое имя в каждом классе.
# Пример вывода:
# Самое частое имя в классе 1: Вася
# Самое частое имя в классе 2: Маша
school_students = [
[ # это – первый класс
{'first_name': 'Вася'},
{'first_name': 'Вася'},
],
[ # это – второй класс
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Оля'},
],[ # это – третий класс
{'first_name': 'Женя'},
{'first_name': 'Петя'},
{'first_name': 'Женя'},
{'first_name': 'Саша'},
],
]
# ???
for index, lists in enumerate(school_students, start=1):
list_names = list()
for dicts in lists:
new_name = dicts['first_name']
list_names.append(new_name)
count_st = Counter(list_names)
count_final = dict(count_st)
max_val = max(count_final.values())
for name, counter in count_final.items():
if counter == max_val:
print(f'Самое частое имя в классе {index}')
print(name)
#Задание 4. Для каждого класса нужно вывести количество девочек и мальчиков в нём.
# Пример вывода:
# Класс 2a: девочки 2, мальчики 0
# Класс 2б: девочки 0, мальчики 2
school = [
{'class': '2a', 'students': [{'first_name': 'Маша'}, {'first_name': 'Оля'}]},
{'class': '2б', 'students': [{'first_name': 'Олег'}, {'first_name': 'Миша'}]},
{'class': '2в', 'students': [{'first_name': 'Даша'}, {'first_name': 'Олег'}, {'first_name': 'Маша'}]},
]
is_male = {
'Олег': True,
'Маша': False,
'Оля': False,
'Миша': True,
'Даша': False,
}
for lists in school:
count_boys = 0 # Вопрос: можно ли здесь использовать enumerate (Если да, то как?)
count_girls = 0
for dict in lists["students"]:
name = dict['first_name']
if is_male[name] is True:
count_boys += 1
else:
count_girls += 1
print(f''' В классе {lists["class"]} мальчики {count_boys},
девочки {count_girls} ''')