for line in open('transactions.dat','r'):
item=line.rstrip('\n').split(',')
custid=item[2]
amt=item[4]
if custid in cust:
amt1=int(cust[custid])+int(amt)
cust[custid]=amt1
else:
cust[custid]=[amt]
我正在尝试检查客户ID是否已存在于字典中,然后只需在该客户中添加之前的金额和新金额。否则,将该金额添加到列表中的新位置。但我得到错误:
Traceback (most recent call last):
File "<pyshell#74>", line 7, in <module>
amt1=int(cust[custid])+int(amt)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'list'
某些交易数据如下:
101300101,2016-09-03,376248582,1013,10.92
109400132,2016-09-03,391031719,1094,36.72
136100107,2016-09-03,391031719,1361,28.77
答案 0 :(得分:0)
您尝试使用defaultdict
了吗?这会让你的工作变得更轻松。
from collections import defaultdict
cust = defaultdict(int)
for line in open('transactions.dat','r'):
item=line.rstrip('\n').split(',')
custid=item[2]
amt=item[4]
cust[custid] += float(amt)
为什么要尝试将amt
转换为int?看起来它不是您发布的示例行中的整数。如果您确实想要将整数更改float(amt)
用于int(float(amt))
。