@violentlie

Как вывести количество повторений значений словаря в списке с вложенными словарями?

Задача такова:
Дан список учеников, нужно посчитать количество повторений каждого имени ученика.
students = [
{'first_name': 'Вася'},
{'first_name': 'Петя'},
{'first_name': 'Маша'},
{'first_name': 'Маша'},
{'first_name': 'Петя'},
]


# Пример вывода:
# Вася: 1
# Маша: 2
# Петя: 2

Я читала про модуль collections.Counter, но не могу понять как его применить конкретно к списку со вложенными словарями. Вложенные структуры - новая тема для меня.
  • Вопрос задан
  • 2176 просмотров
Решения вопроса 2
kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn
students = [
    {'first_name': 'Вася'},
    {'first_name': 'Петя'},
    {'first_name': 'Маша'},
    {'first_name': 'Маша'},
    {'first_name': 'Петя'},
]

names = dict()

for student in students:
    if student['first_name'] not in names.keys():
        names[student['first_name']] = 1
    else:
        names[student['first_name']] += 1

for name, count in names.items():
    print(f'{name}: {count}')


Можно еще так:
names = [s['first_name'] for s in students]

for name in set(names):
    print(f'{name}: {names.count(name)}')
Ответ написан
adugin
@adugin Куратор тега Python
from collections import Counter
from operator import itemgetter

Counter(map(itemgetter('first_name'), students))

Вместо itemgetter в map можно использовать лямбду, это эквивалент:
Counter(map(lambda student: student['first_name'], students))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы