【问题标题】:Way to save a dictionary as a separate reference in python在python中将字典另存为单独引用的方法
【发布时间】: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


    【解决方案1】:

    你可以使用copy.deepcopy:

    from copy import deepcopy
    totalstats = deepcopy(mystats)
    

    如果 dict 不包含可变值,那么您可以简单地使用 dict.copy()

    【讨论】:

    • 我怀疑这里需要深拷贝; mystats.copy() 将是一个浅拷贝,足以用于适合 CSV 行的平面数据。
    • 谢谢,我会用这个的。
    • @sabbahillel 很高兴有帮助,如果对您有用,请随时 accept the answer
    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多