2014-01-13 45 views
0

從字典中構建一組統計信息時,我會處理各種條目(如用戶)。因此,我可以爲每個用戶構建各種統計數據。在這樣做的同時,我還爲可稱爲「總計」的虛擬用戶構建統計數據。完成字典完成後,我創建一個.csv文件並使用writerow方法輸出統計信息。在python中保存字典作爲單獨參考的方法

由於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的整個統計數據集

回答

1

您可以用copy.deepcopy

from copy import deepcopy 
totalstats = deepcopy(mystats) 

如果字典不包含可變值,那麼您可以簡單地使用dict.copy()

+1

我懷疑這裏需要深層複製; 'mystats.copy()'將是一個淺層副本,足以滿足適用於CSV行的平面數據的需要。 –

+0

謝謝,我會用這個。 – sabbahillel

+0

@sabbahillel很高興幫助,隨時[接受答案](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235)如果它的工作您。 –