如何计算列表中文件中的费用并将其更改为元组(python)
How to calculate expenses in a file in list and change it to tuple(python)
伙计们,我无法解决这个问题...
我有一个文件 'text.CSV'
像这样:
milk,2.35
bread , 1.95
chips , 2.54
milk , 2.38
milk,2.31
bread, 1.90
def 获取文件,它应该 return 这个:
[('bread', '.85'), ('chips', '.54'), ('milk', '.04')]
我该怎么做?我尝试了不同的方法!但我无法解决
我的解决方案:
def calculate_expenses(filename):
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
f=[]
f2=[]
for i in data:
x=i.split(',')
for j in x:
a=x[0].strip()
b=x[1].strip()
a=a.strip('\n')
b=b.strip('\n')
b=b.split()
b.insert(0,'$')
b="".join(b)
f.append(a)
f.append(b)
f2.append(f)
f=[]
break
return f2
filename='text.CSV'
print(calculate_expenses(filename))
它returns:
[['milk', '.35'], ['bread', '.95'], ['chips', '.54'], ['milk', '.38'], ['milk', '.31'], ['bread', '.90']]
有人可以帮我吗?
最简单的方法是使用字典:每次遇到一行时,您将检查该值是否在字典中,如果不在则创建它。然后您将添加值。
def calculate_expenses(filename):
#your dict of results :
dres={}
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
f=[]
f2=[]
for i in data:
x=i.split(',')
a=x[0].strip()
b=x[1].strip()
a=a.strip('\n')
b=b.strip('\n')
if a not in dres:
dres[a]=0
dres[a]+=float(b)
f2=[]
#outputting the correct format : as an array of tuples
for k in dres.keys():
f2+=[(k,'${:.2f}'.format(dres[k]))]
return f2
filename='text.CSV'
print(calculate_expenses(filename))
如果你不反对使用pandas:
import pandas as pd
df = pd.DataFrame.from_csv('text.csv',index_col=None,header=None)
df[0] = df[0].apply(lambda x:x.strip())
df = df.groupby(0).sum().reset_index()
mylist = zip(df[0],map(lambda x: '${:.2f}'.format(x),df[1]))
def calculate_expenses(filename):
d= {}
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
for line in data:
line = line.strip().split(',')
my_item = line[0].strip()
my_price = float(line[1].strip())
if my_item not in my_dictionary:
d[my_item] = my_price
else:
d[my_item] += my_price
l= []
my_keys = sorted(d.keys())
for x in my_keys:
l.append((x,"${0:.2f}".formatd[x])))
return l
伙计们,我无法解决这个问题... 我有一个文件 'text.CSV' 像这样:
milk,2.35
bread , 1.95
chips , 2.54
milk , 2.38
milk,2.31
bread, 1.90
def 获取文件,它应该 return 这个:
[('bread', '.85'), ('chips', '.54'), ('milk', '.04')]
我该怎么做?我尝试了不同的方法!但我无法解决 我的解决方案:
def calculate_expenses(filename):
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
f=[]
f2=[]
for i in data:
x=i.split(',')
for j in x:
a=x[0].strip()
b=x[1].strip()
a=a.strip('\n')
b=b.strip('\n')
b=b.split()
b.insert(0,'$')
b="".join(b)
f.append(a)
f.append(b)
f2.append(f)
f=[]
break
return f2
filename='text.CSV'
print(calculate_expenses(filename))
它returns:
[['milk', '.35'], ['bread', '.95'], ['chips', '.54'], ['milk', '.38'], ['milk', '.31'], ['bread', '.90']]
有人可以帮我吗?
最简单的方法是使用字典:每次遇到一行时,您将检查该值是否在字典中,如果不在则创建它。然后您将添加值。
def calculate_expenses(filename):
#your dict of results :
dres={}
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
f=[]
f2=[]
for i in data:
x=i.split(',')
a=x[0].strip()
b=x[1].strip()
a=a.strip('\n')
b=b.strip('\n')
if a not in dres:
dres[a]=0
dres[a]+=float(b)
f2=[]
#outputting the correct format : as an array of tuples
for k in dres.keys():
f2+=[(k,'${:.2f}'.format(dres[k]))]
return f2
filename='text.CSV'
print(calculate_expenses(filename))
如果你不反对使用pandas:
import pandas as pd
df = pd.DataFrame.from_csv('text.csv',index_col=None,header=None)
df[0] = df[0].apply(lambda x:x.strip())
df = df.groupby(0).sum().reset_index()
mylist = zip(df[0],map(lambda x: '${:.2f}'.format(x),df[1]))
def calculate_expenses(filename):
d= {}
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
for line in data:
line = line.strip().split(',')
my_item = line[0].strip()
my_price = float(line[1].strip())
if my_item not in my_dictionary:
d[my_item] = my_price
else:
d[my_item] += my_price
l= []
my_keys = sorted(d.keys())
for x in my_keys:
l.append((x,"${0:.2f}".formatd[x])))
return l