2014-03-13 1 views
2

파이썬의 defaultdict 객체에 중복 복사본 (메모리에 같은 위치에 새 포인터를 할당하는 것뿐만 아니라)을 만들려면 어떻게해야합니까? 위의 코드는 무엇을파이썬의 defaultdict 변수 복사 또는 복제

from collections import defaultdict 
itemsChosen = defaultdict(list)  
itemsChosen[1].append(1) 
dupChosen = itemsChosen 
itemsChosen[2].append(1) 
print dupChosen 

얕은 카피하고

defaultdict(<type 'list'>, {1: [1]}) 

감사를 반환하는 내가 찾고 있어요 무엇을 반면

defaultdict(<type 'list'>, {1: [1], 2: [1]}) 

반환합니다.

+0

이것은 얕은 사본이 아니며 동일한 개체에 대한 참조가 두 개인 경우입니다. 얕은 복사본은'itemsChosen.copy()'입니다. – roippi

+1

또한 제쳐두고 ...'defaultdict'는 많은 내장 함수와 마찬가지로 복사 기능을 가지고 있습니다 :'dupChosen = itemsChosen.copy()'... –

+0

설명을 주셔서 감사합니다 - 얕은/깊은 복사를 오해했습니다. 또한 defaultdict에 대한 함수 페이지도 없지만, 그 함수는 dict로부터 상속을 받기 때문에 의미가 있습니다. – so13eit

답변

4

사용 copy : 여러 스팅의 경우

from copy import copy 

dupChosen = copy(itemsChosen) 

deepcopy도있다.

+1

어떻게 Pythonic! 고마워, 대답을 받아 들일거야. 고마워. – so13eit