def customer_dictionary(balfilename):
d = {}
bafile = open(balfilename, 'r')
for line in bafile:
dic = line.split()
d[dic[1]] = [dic[0] , dic[2]]
return d
bafile.close()
def update_customer_dictionary(cdictionary, transfilename):
transfile = open(transfilename. 'r')
for line in transfile:
act, trans = line.strip().split()
if act in dictionary:
cdictionary[act][1] += float(trans)
else:
cdictionary[act][2] = [act][2]
File 1:
139-28-4313 115 1056.30
706-02-6945 135 -99.06
595-74-5767 143 4289.07
972-87-1379 155 3300.26
814-50-7178 162 3571.94
632-72-6766 182 3516.77
699-77-2796 191 2565.29
File 2:
380 2932.48
192 -830.84
379 2338.82
249 3444.99
466 -88.33
466 2702.32
502 -414.31
554 881.21
所以我有这两个函数,第一个创建一个字典,第二个使用给定的两个文件更新第一个创建的字典。我不确定我的第二个功能是否正确。任何人都可以帮助我吗?
答案 0 :(得分:0)
customer_dictionary
中的第一个问题:您在return
之后关闭文件,并且该行不会被执行。
打开文件的最佳方法是:
with open(balfilename, 'r') as bafile:
for line in bafile:
#do stuff
#when done, continue code here, no need to call close()
使用customer_dictionary
创建的字典摘录:
d={'115': ['139-28-4313', '1056.30']}
键是字符串,值是两个字符串的列表。
然后在update_customer_dictionary
您尝试这样做:
act="115"
trans="2930.5"
if act in d:
d[act][1] += float(trans)
else:
d[act][2] = [act][2]
两个问题:
d[act][1]
是一个字符串(此处为' 1056.30')。你不能添加一个字符串和一个浮点数。我建议将字典的创建改为浮动,这似乎更合乎逻辑。act
不在字典中,则需要创建新条目。我不太明白你试图用d[act][2]= [act][2]
做什么,它不是一个有效的python线。d[act]=['unknown',trans]
创建新条目,但这取决于您需要实现的目标。