>  기사  >  백엔드 개발  >  Python에서 사전을 목록에 추가한 후 값 변경에 대한 간략한 설명

Python에서 사전을 목록에 추가한 후 값 변경에 대한 간략한 설명

不言
不言원래의
2018-05-04 14:13:532521검색

이 글은 주로 Python에서 사전을 목록에 추가한 후의 값 변경에 대해 간략하게 소개합니다. 이제 특정 참조 값이 있으므로 이를 참조할 수 있습니다.

예제를 살펴보세요

d={'test':1}
d_test=d
d_test['test']=2
print d

명령줄에서 연습해 보면 d_test인데 d도 그에 따라 변경된 것을 알 수 있습니다.

보통 우리가 기대하는 것과는 다릅니다.

왜?

사전 d는 객체이고 d_test=d는 실제로 메모리에 사전을 다시 생성하지 않기 때문입니다. 그것은 단지 같은 객체를 가리킬 뿐입니다. 이는 Python이 성능을 향상하고 메모리를 최적화하기 위한 고려사항이기도 합니다.

실제 시나리오

d={"name":""}
l=[]
for i in xrange(5):
  d["name"]=i
  l.append(d)
print l

루프는 원하는 결과와 같지 않을 수도 있습니다.

목록에 추가되더라도 목록에 저장되는 것은 여전히 ​​객체이거나 사전의 주소입니다. 메모리의 실제 저장 공간이 아닌

.copy() 메소드를 사용하세요. 새로운 독립사전을 생성할 수 있습니다

d={"name":""}
l=[]
for i in xrange(5):
  test=d.copy()
  test["name"]=i
  l.append(test)
print l

업데이트:

a={'q':1,'w':[]}
b=a.copy()
b['q']=2
b['w'].append(123)
print a
print b

이때 a에서 'q'의 값은 변하지 않는 것으로 확인되었으나, 목록에서 여전히 변경이 발생합니다

복사본은 얕은 사본이므로

하지만 트랙이 있습니다

a={'q':1,'w':[]}
b=a.copy()
b['q']=2
b['w']=[123]
print a
print b

직접 할당하면 a의 구조가 변경되지 않습니다(주로 추가 방법으로 인해).

심층 수준 복사

import copy
a={'q':1,'w':[]}
b=copy.deepcopy(a)

관련 권장 사항:

Python은 빈 목록을 생성하고 추가 사용 방법을 설명합니다


위 내용은 Python에서 사전을 목록에 추가한 후 값 변경에 대한 간략한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.