#python #dictionary
#python #словарь
Вопрос:
Я уже некоторое время пытаюсь разобраться в этом, не самый лучший в программировании. Вот что у меня есть на данный момент.
Ключами словаря должны быть заголовки сотрудников в списке, а значениями — количество сотрудников с этим конкретным заголовком.
employees = [
{
"email": "jonathan2532.calderon@gmail.com",
"employee_id": 101,
"firstname": "Jonathan",
"lastname": "Calderon",
"title": "Mr",
"work_phone": "(02) 3691 5845"
},
{
"email": "christopher8710.hansen@gmail.com",
"employee_id": 102,
"firstname": "Christopher",
"lastname": "Hansen",
"title": "Mr",
"work_phone": "(02) 5807 8580"
},
{
"email": "isabella4643.dorsey@gmail.com",
"employee_id": 103,
"firstname": "Isabella",
"lastname": "Dorsey",
"title": "Mrs",
"work_phone": "(02) 6375 1060"
},
{
"email": "barbara1937.baker@gmail.com",
"employee_id": 104,
"firstname": "Barbara",
"lastname": "Baker",
"title": "Ms",
"work_phone": "(03) 5729 4873"
}
]
#my work
for i in employees:
print(i['title'])
employees.count('title')
print()
#my output:
Mr
Mr
Mrs
Ms
#expected output:
{'Ms': 1, 'Mrs': 1, 'Mr': 2}
Комментарии:
2. Где находится код, который выдает вам результат, который вы описываете? Поставьте на него счетчик!
3. спасибо тебе за это @meowgoesthedog
Ответ №1:
from collections import Counter
counts = Counter([x['title'] for x in employees])
print(counts)
# Counter({'Mr': 2, 'Mrs': 1, 'Ms': 1})
Если есть какие-либо записи, у которых нет title
поля, используйте:
counts = Counter([x.get("title", None) for x in employees])
# Counter({'Mr': 2, 'Mrs': 1, 'Ms': 1, None: 1})
Здесь .get
будет получено значение для title
или возвращено, None
если title
его там нет.
Ответ №2:
Используя collections.defaultdict
Пример:
from collections import defaultdict
result = defaultdict(int)
for i in employees:
result[i["title"]] = 1
print(result)
Вывод:
defaultdict(<type 'int'>, {'Mrs': 1, 'Ms': 1, 'Mr': 2})
Комментарии:
1. Также можно использовать,
Counter
если вы собираетесь импортировать изcollections
.2. Очень полезно, в итоге я использовал счетчик 🙂
Ответ №3:
Вы можете сделать это с помощью счетчика:
from collection import Counter
titles = [e['title'] for e in employees]
counts = Counter(titles)
# Counter({'Mr': 2, 'Mrs': 1, 'Ms': 1})