In this Collections.orderedDict() problem we need to develop a python program that can read an integer and string that are separated with a line. and then we need to use the orderedDict() function to store the input and then print the item name and price of that item on the output screen.

HackerRank Collections.OrderedDict() solution in python


Problem solution in Python 2 programming.

from collections import OrderedDict
nTrans = int(raw_input())
inventories = OrderedDict()
for n in range(nTrans):
    tmp = raw_input().split()
    item = ' '.join(tmp[0:len(tmp)-1])
    price = int(tmp[-1])
    if item in inventories:
        inventories[item] += price
    else:
        inventories[item] = price
items = list(inventories.items())
items.sort()
for item in items:
    print item[0], item[1]


Problem solution in Python 3 programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from collections import OrderedDict
d = OrderedDict()
for _ in range(int(input())):
    item, space, quantity = input().rpartition(' ')
    d[item] = d.get(item, 0) + int(quantity)
for item, quantity in d.items():
    print(item, quantity)


Problem solution in pypy programming.

# Enter your code here. Read input from STDIN. Print output to STDOUT
from collections import OrderedDict
items = int(raw_input())
items_price = OrderedDict()
for _ in range(items):
    desc = raw_input().split()
    if not items_price.get(" ".join(desc[0:-1]),None):
        items_price[" ".join(desc[0:-1])] =0
    items_price[" ".join(desc[0:-1])] += int(desc[-1])

for i,j in items_price.items():
    print i,j


Problem solution in pypy3 programming.

from collections import OrderedDict

d = OrderedDict()
for _ in range(int(input())):
    info = input().split(' ')
    price = int(info[-1])
    info.pop()
    item = ' '.join(info)
    price = int(price)
    if not item in d:
        d[item] = price
    else:
        d[item] += price

for pair in d:
    print(pair + ' ' + str(d[pair]))