On 10/03/2016 09:02, 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
Here's a rather un-Pythonic and clunky version. But it gives the
expected results. (I've dispensed with file input, but that can easily
be added back.)
def last(a):
return a[-1]
def init(a): # all except last element
return a[0:len(a)-1]
data =["BANANA FRIES 12", # 1+ items/line, last must be numeric
"POTATO CHIPS 30",
"APPLE JUICE 10",
"CANDY 5",
"APPLE JUICE 10",
"CANDY 5",
"CANDY 5",
"CANDY 5",
"POTATO CHIPS 30"]
names = [] # serve as key/value sets
totals = []
for line in data: # banana fries 12
parts = line.split(" ") # ['banana','fries','12']
value = int(last(parts)) # 12
name = " ".join(init(parts)) # 'banana fries'
try:
n = names.index(name) # update existing entry
totals[n] += value
except:
names.append(name) # new entry
totals.append(value)
for i in range(len(names)):
print (names[i],totals[i])
--
Bartc
--
https://mail.python.org/mailman/listinfo/python-list