-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask_06.py
More file actions
55 lines (44 loc) · 1.52 KB
/
task_06.py
File metadata and controls
55 lines (44 loc) · 1.52 KB
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
"""
Given an array of order objects for a restaurant, each with a table number and a list of ordered items, write a function that returns an object mapping each table number to a summary of how many times each item was ordered at that table. Extra credit: Could you go so far as to make this a restaurant management game?
Example:
orders = [
{ "table": 1, "items": ["burger", "fries"] },
{ "table": 2, "items": ["burger", "burger", "fries"] },
{ "table": 1, "items": ["salad"] },
{ "table": 2, "items": ["fries"] }
];
> order_summary(orders)
{
1: { "burger": 1, "fries": 1, "salad": 1 },
2: { "burger": 2, "fries": 2 }
}
// or, string output format:
"Table 1 ordered 1 burger, 1 fries, and 1 salad. Table 2 ordered 2 burgers and 2 fries."
"""
orders = [
{"table": 1, "items": ["burger", "fries"]},
{"table": 2, "items": ["burger", "burger", "fries"]},
{"table": 1, "items": ["salad"]},
{"table": 2, "items": ["fries"]},
]
def order_summary(orders):
pass
tables = set(map(lambda el: el["table"], orders))
res = {}
for order in orders:
items = order["items"]
if not order["table"] in res:
res[order["table"]] = items
else:
res[order["table"]] += items
transformer = lambda items: dict((x, items.count(x)) for x in set(items))
return {table: transformer(items) for table, items in res.items()}
print(order_summary(orders)) # =>
"""
{
1: { "burger": 1, "fries": 1, "salad": 1 },
2: { "burger": 2, "fries": 2 }
}
"""
"""
"""