编写一个名为calculate_expenses
的函数,该函数接收文件名作为参数。该文件包含有关人员物品费用的信息。您的函数应返回基于项名称排序的元组列表。每个元组由项目名称和该项目的总费用组成,如下所示:
请注意,文件的每一行只包含一个项目,并且该项目的购买价格用逗号分隔。在物品或价格之前或之后可能有空格。然后你的函数应该读取文件并返回一个元组列表,如:
注意:
元组根据商品名称排序,即面包在牛奶之前的芯片之前。
总费用是以$开头的字符串,小数点后的准确度为两位数。
提示:使用${:.2f}
为总费用正确创建和格式化字符串。
到目前为止的代码:
def calculate_expenses(file_name):
file_pointer = open(file_name, 'r')
data = file_pointer.readlines()
list_main=[]
for line in data:
name, price = line.strip().split(',')
print (name, price)
输出:
('milk', '2.35')
('bread ', ' 1.95')
('chips ', ' 2.54')
('milk ', ' 2.38')
('milk', '2.31')
('bread', ' 1.90')
我无法摆脱空间,不知道下一步该做什么。
答案 0 :(得分:0)
可以通过以下方式解决:
def calculate_expenses(filename):
file_pointer = open(filename, 'r')
# You can use either .read() or .readline() or .readlines()
data = file_pointer.readlines()
# NOW CONTINUE YOUR CODE FROM HERE!!!
my_dictionary = {}
for line in data:
item, price= line.strip().split(',')
my_dictionary[item.strip()] = my_dictionary.get(item.strip(),0) + float(price)
dic={}
for k,v in my_dictionary.items():
dic[k]='${0:.2f}'.format(round(v,2))
L=([(k,v) for k, v in dic.iteritems()])
L.sort()
return L
答案 1 :(得分:0)
在python3中我们没有“迭代项”。 您应该在这一行中使用“item”:
L=([(k,v) for k, v in dic.iteritems()])