Simple exercise

Rodrick Brown rodrick.brown at gmail.com
Thu Mar 10 04:02:22 EST 2016


>From the following 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

I'm expecting the following output
BANANA FRIES 12
POTATO CHIPS 60
APPLE JUICE 20
CANDY 20

However my code seems be returning incorrect value

#!/usr/bin/env python3

import sys
import re
from collections import OrderedDict

if __name__ == '__main__':

  od = OrderedDict()
  recs = int(input())

  for _ in range(recs):
    file_input = sys.stdin.readline().strip()
    m = re.search(r"(\w.+)\s+(\d+)", file_input)

    if m:
      if m.group(1) not in od.keys():
        od[m.group(1)] = int(m.group(2))
      else:
        od[m.group(1)] += int(od.get(m.group(1),0))
  for k,v in od.items():
    print(k,v)

What's really going on here?

$ cat groceries.txt | ./groceries.py
BANANA FRIES 12
POTATO CHIPS 60
APPLE JUICE 20
CANDY 40



More information about the Python-list mailing list