2014-01-13 4 views
0

사전에서 통계 집합을 만들 때 사용자 등 다양한 항목을 처리합니다. 따라서 각 사용자에 대한 다양한 통계를 작성할 수 있습니다. 이렇게하는 동안, 나는 또한 "total"이라고 부를 수있는 더미 사용자에 대한 통계를 작성합니다. 사전이 완전히 빌드 된 후 .csv 파일을 만들고 writerow 메서드를 사용하여 통계를 출력합니다.사전을 파이썬에서 별도의 참조로 저장하는 방법

파이썬이 특정 순서없이 사전 키를 반복하므로 전체 사용자가 마지막으로 인쇄하게하고 싶습니다. 생성 된 통계를 저장 변수에 저장 한 후 적절한 시간에 출력하려고하면 저장 변수가 재설정됩니다. 왜냐하면 파이썬 변수가 값보다는 참조로 작동하기 때문입니다. 그 코드입니다

그러나 실제 결과는 mystats에 마지막으로 입력 된 값의 집합입니다.

이있는 totalstats 내가 할당시 한 또는 내가 마지막에 모든 통계를 계산하거나 어떻게해야합니까 mystats 내에서 명시 적 값을 유지하는 것입니다 보여줄 수있는 괜찮은 방법이

for stattype in mystats: 
    totalstats[stattype] = mystats[stattype] 

이 작업을 수행하는 동안 전체 통계 집합에 대해 커다란 루프를 수행하거나 처리 끝에 Total에 대한 전체 통계 집합을 계산하는 대신 "totalstats = mystats"유형의 것이 필요합니다.

답변

1

사용할 수 있습니다 copy.deepcopy :

from copy import deepcopy 
totalstats = deepcopy(mystats) 

dict에 가변 값이없는 경우 dict.copy()을 사용하면됩니다.

+1

여기에 깊은 사본이 필요하다고 생각됩니다. 'mystats.copy()'는 얕은 복사본이 될 것이고 CSV 행에 맞는 플랫 데이터의 목적을 위해 충분할 것입니다. –

+0

감사합니다. 사용하겠습니다. – sabbahillel

+0

@ sabbahillel 도움이 되었다니 기꺼이 도와 주셨고, [답변 수락] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work/5235#5235) 당신. –

관련 문제