Дан список статусов заказов.
Для каждого уникального статуса посчитайте:
- количество вхождений (count)
- процент от общего числа (pct, округлить до 1 знака)
Задача основана на вопросах с собеседований в Ozon.
def value_counts_pct(statuses: list[str]) -> list[dict]:
value_counts_pct(["completed","completed","pending","completed","cancelled","pending"])
→ [
{"status": "completed", "count": 3, "pct": 50.0},
{"status": "pending", "count": 2, "pct": 33.3},
{"status": "cancelled", "count": 1, "pct": 16.7}
]
Результат отсортирован по убыванию count, при равенстве — по алфавиту.
statuses = ["completed","completed","pending","completed","cancelled","pending"][{"status":"completed","count":3,"pct":50},{"status":"pending","count":2,"pct":33.3},{"status":"cancelled","count":1,"pct":16.7}]statuses = ["a","b","a","b","c"][{"status":"a","count":2,"pct":40},{"status":"b","count":2,"pct":40},{"status":"c","count":1,"pct":20}]statuses = ["x","x","x","x"][{"status":"x","count":4,"pct":100}]