Robie sobie zadanka na jednym z popularnych portali (Hackerrank).
Zadanie polega na użyciu kolekcji: OrderDict() zgodnie z poniższym.
INPUT:
9
BANANA FRIES 12
POTATO CHIPS 30
APPLE JUICE 10
CANDY 5
APPLE JUICE 10
CANDY 5
CANDY 5
CANDY 5
POTATO CHIPS 30
OUTPUT:
BANANA FRIES 12
POTATO CHIPS 60
APPLE JUICE 20
CANDY 20
Wykonałem to tak:
from collections import OrderedDict
n = int(raw_input())
L = OrderedDict()
for i in range(n):
item_name, net_price = raw_input().split(' ')
net_price = int(net_price)
sum_price = 0
if item_name in L:
for j, k in L.items():
if item_name == j:
sum_price = k + net_price
L[item_name] = sum_price
else:
L[item_name] = net_price
for i, sum_price in L.items():
print i, sum_price
Częściowo działa tj: gdy podaje np: BANAN 10, CANDY 5 , CANDY 7 itp działa poprawnie gdy zaś nazwa produktu składa się z 2 elementów to nie działa. Jest to jakby oczywiste bo split(' ') więc dzieli mi po spacji. Nie umiem tego poprawić. Z pewnościa jest jakiś prosty mykens lecz nie bardzo go widzę.
Czyli chciałbym żeby:
item_name = BANANA FRIES
net_price = 10
Jak najmniej inwazyjnie poprawić mój program ?
Sprawa przypuszczam że jest oczywista ale jakoś nie mogę nic wykminić.