我是stackoverflow和Python的新手。我已经试了几天来让这个工作,但我不太明白我做错了什么,我也找了很多常见的问题,但都没有找到。在
下面的代码从csv文件中读取一些销售数据,然后返回一个包含两个键(唯一代码和年份值)的字典以及特定月份销售额的总和。我向函数传递两个参数,代码和月份。这部分是做我想做的,当我想在不同的月份迭代时,问题就来了,不管我给函数赋值是什么(月),它总是返回我分析的第一个值
d = defaultdict(int)
spamReader = csv.reader(open('C:\Sales\Sales_CO05.csv', 'rU'))
#Return the sales sum for a given month and code
def sum_data_by_month(ean, m):
for line in spamReader:
tokens = [t for t in line]
if tokens[5] == str(ean):
try:
sid = tokens[5]
dusid = tokens[18]
value = int(str(tokens[m]).replace(',',''))
except ValueError:
continue
d[sid,dusid] += value
return d
#Try to iterate over different month values
j = sum_data_by_month('7702010381089', 6)
f = sum_data_by_month('7702010381089', 7)
m = sum_data_by_month('7702010381089', 8)
a = sum_data_by_month('7702010381089', 9)
我得到的结果是:
^{pr2}$这就是我所期待的:
defaultdict(<type 'int'>, {('7702010381089', '2013'): 80, ('7702010381089', '2014'): 363})
defaultdict(<type 'int'>, {('7702010381089', '2013'): 229, ('7702010381089', '2014'): 299})
etc..
看起来,如果dict处于某种不允许更新的内存状态,如果我运行函数的一个实例(即j=sum_data_by_month('770201381089',8),我就会得到所需的值。在
任何帮助都是值得的。在
谢谢!在
字典是可变的
不创建新词典。。。它只是指向现有的字典
^{pr2}$你可以通过
现在
^{4}$相关问题 更多 >
编程相关推荐