이것이 기본적인 Python 질문이라면 미안하지만 어떤 이유로 든 이해할 수 없습니다.
사전 목록을 생성한다고 가정 해 보겠습니다.
b=[[{'j':1}]*3]*3
그래서 "b"는 다음과 같습니다.
[[{'j': 1}, {'j': 1}, {'j': 1}],
[{'j': 1}, {'j': 1}, {'j': 1}],
[{'j': 1}, {'j': 1}, {'j': 1}]]
이제 "b"를 다음과 같이 변경한다고 가정합니다.
[[{'j': 1}, {'j': 1}, {'j': 1}],
[{'j': 1}, {'j': 1}, {'j': 90}],
[{'j': 1}, {'j': 1}, {'j': 1}]]
그래서이 코드 줄을 순진하게 사용합니다.
b[1][2]['j']=90
그러나 이제 "b"는 다음과 같습니다.
[[{'j': 90}, {'j': 90}, {'j': 90}],
[{'j': 90}, {'j': 90}, {'j': 90}],
[{'j': 90}, {'j': 90}, {'j': 90}]]
목록 목록의 모든 사전이 변경된 이유는 무엇입니까? b [1] [2] 항목 만 변경되지 않은 이유는 무엇입니까?
또한 라인
b=[[{'j':1}]*3]*3
b[1][2]={'j':90}
"b"를 다음으로 변경
[[{'j': 1}, {'j': 1}, {'j': 90}],
[{'j': 1}, {'j': 1}, {'j': 90}],
[{'j': 1}, {'j': 1}, {'j': 90}]]
나는 또한 설명 할 수 없습니다.
사전의 copy()
명령 을 사용해야합니다. 그렇지 않으면 동일한 사전에 대한 여러 참조를 작성합니다.
다음과 같이 시도하십시오.
>>> c = {'j':1}
>>> b = [c, c.copy(), c.copy()]
>>> b
[{'j': 1}, {'j': 1}, {'j': 1}]
>>> b[2]['j']=2
>>> b
[{'j': 1}, {'j': 1}, {'j': 2}]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다