2012-07-03 5 views
4

키에 의존하지 않는 파이썬 사전의 값을 수정 OK 경우 궁금 해요 : 나는 '파이썬 - 사전의 변화 값 itervalues ​​()를 사용하여

# d is some dictionary containing classes I wrote 
for v in d.itervalues(): 
    # modify v, and v's type may or may not change 

파이썬 표준이 이것에 대해 뭐라고하는지 모르겠다. 누군가 정보를 제공해 줄 수 있니?

감사합니다.

d = {1: [1]} 
for v in d.itervalues(): 
    v[0] += 1 

다음 예,이 완전히 안전 :

+3

마찬가지로 v는 복사되지 않은 동일한 객체가되므로 자유롭게 변경할 수 있습니다. –

+1

예, 사용자를 수정할 수 있지만 다른 방법을 선택해야합니다. 공식 파이썬 문서에서 몇 장의 첫 장을 읽으십시오. –

+1

"v 유형이 변경 될 수도 있고 변경되지 않을 수도 있음"이란 무엇을 의미합니까? 객체의 유형이 어떻게 바뀔 수 있습니까? –

답변

5

당신은 같은 구조를 의미합니다. dict은 해당 객체에 대한 참조를 저장하기 만하며 저장 및 검색 이외의 다른 방법으로는 해당 객체를 건드리지 않습니다. 이 명시 적으로 문서화 아니지만,이 definition of mapping에서 암시 적이다 (이 dict의 것은 하위 유형입니다) :

매핑 객체는 임의의 객체에 해쉬 값을 매핑합니다.

"임의"는 개체가 변경 될 수 있음을 의미합니다.

관련 문제