【发布时间】:2014-01-13 18:07:34
【问题描述】:
从字典构建一组统计信息时,我会处理各种条目(例如按用户)。因此,我可以为每个用户构建各种统计信息。在这样做的同时,我还为一个虚拟用户构建了统计数据,我可以称之为“总计”。字典完全建好后,我创建一个.csv文件,并使用 writerow 方法输出统计信息。
由于 python 没有特定顺序迭代字典键,我想让总用户最后打印。如果我尝试将生成的统计信息保存到保存变量中,然后在适当的时间输出它,保存变量会被重置,因为 python 变量通过引用而不是值工作。就是代码
mystats = {}
totalstats = {}
for user in mydict
#perform calculations to generate mystats dictionary entries
if user == 'Total':
totalstats = mystats
else:
outfile.writerow(mystats)
outfile.writerow(totalstats)
但是,totalstats 的实际输出是最后放入 mystats 的任何一组值。
有没有一种体面的方法来证明 totalstats 是将明确的值保留在我在分配时拥有的 mystats 中,还是我需要在最后计算所有统计数据还是这样做
for stattype in mystats:
totalstats[stattype] = mystats[stattype]
虽然这可行,但我宁愿使用“totalstats = mystats”类型的东西,而不是对完整的统计数据集进行大循环或在处理结束时计算 Total 的整个统计数据集。
【问题讨论】:
标签: python dictionary reference variable-assignment