Simple exercise
Peter Otten
__peter__ at web.de
Thu Mar 10 04:41:34 EST 2016
Rodrick Brown wrote:
> 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))
Look closely at the line above.
What value do you want to add to the current sum?
What value are you actually providing on the right side?
> 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