본문 바로가기
programming/Python

파이썬 딕셔너리 복사하기 새로운 독립적인 딕셔너리를 만들기

by 개코 - 개발과 코딩 2021. 10. 3.

파이썬으로 딕셔너리를 사용하고자 할 때 복사 기능을 이용하여 새로운 딕셔너리를 만들 수 있다. 복사 기능을 사용하면 새로 생성된 딕셔너리 변수는 독립적으로 사용할 수 있고, 원본 데이터와 분리하여 데이터를 가공할 수 있다.

파이썬 딕셔너리 복사하기
새로운 독립적인 딕셔너리를 만들기

뭐든 프로그램이 그렇지만 데이터를 가공할 때 원본 데이터는 보존해야 한다.

변수에 할당되어 있는 값들도 조작하기 전에 원본이 되는 변수는 그대로 두고 새로운 변수를 이용해 데이터를 가공하는 이유도 여기에 있다.

파이썬 딕셔너리도 마찬가지다.

원본 데이터를 그대로 두고 데이터를 가공하고 프로그램 동작시 잘못될 경우 복구할 수 있는 여지를 만들어 놓을 수 있다.

변수 할당의 문제

딕셔너리 또한 단순히 변수에 원본 데이터를 할당하여 사용할 수 있지만 이 때 할당된 값이 바뀌면 원본데이터에도 영향이 간다.

코드를 보자.

새로운 변수를 만들어 원본 딕셔너리 값을 할당하였다.

이후 딕셔너리 값을 변경하였다.

예상하면 할당된 새로운 변수의 딕셔너리 데이터는 변경되고 원본 데이터는 변경되지 말아야 한다.

print('----------')

vDict = {
  "company": "SM Ent",
  "group": "레드벨벳",
  "groupEn" : "Red Velvet",
  "memberCount" : 4,
  "member": ["아이린,슬기,웬디,조이,예리"]
}

print("딕셔너리 Dintionary items : ", type(vDict), len(vDict), vDict)

print('----------')

vDictCopy = vDict
vDictCopy["group"] = "Red Velvet"

print(type(vDict), len(vDict), vDict)
print(type(vDictCopy), len(vDictCopy), vDictCopy)

print('----------')

결과 화면을 보자.

분명 새로운 변수의 값을 변수의 딕셔너리 값을 변경했지만, 원본 딕셔너리 값도 변경되었다.

파이썬 딕셔너리는 새로운 변수에 값을 할당하더라도 원본 데이터에 영향이 갈 수 있음을 나타낸다.

보통 데이터 타입에 copy() 와 비슷한 함수가 있다면 원본 데이터에 영향이 있는지 의심을 할 필요가 있다.

이것은 다른 프로그램 언어도 마찬가지이다.

복사 방법 2가지

파이썬 딕셔너리 값을 복사하는 방법은 2가지가 있다.

  • 첫번째 딕셔너리를 새로 만드는 방법이다.
  • 두번째 Dictionary.copy() 명령어를 사용하는 방법이다.

하나씩 코드를 보고 결과화면을 보도록 하자.

먼저, 첫번째 방법으로 새로운 딕셔너리를 만드는 방법이다.

print('----------')

vDict = {
  "company": "SM Ent",
  "group": "레드벨벳",
  "groupEn" : "Red Velvet",
  "memberCount" : 4,
  "member": ["아이린,슬기,웬디,조이,예리"]
}

print("딕셔너리 Dintionary items : ", type(vDict), len(vDict), vDict)

print('----------')

vDictCopy = dict(vDict)
vDictCopy["group"] = "Red Velvet"

print("딕셔너리 vDict : ", type(vDict), len(vDict), vDict)
print("딕셔너리 vDictCopy : ", type(vDictCopy), len(vDictCopy), vDictCopy)

print('----------')

새로운 딕셔너리 값을 만들면서 원본 데이터를 인자값으로 주었다.

이 후 새롭게 만들어진 딕셔너리의 값을 변경하여 원본 딕셔너리 데이터에도 영향이 있는지 확인해 보았다.

새로 만들어진 딕셔너리 데이터는 값이 변경되었으며, 원본데이터에는 영향이 없는 것을 알 수 있다.

두번째 방법은 Dictionary.copy() 명령어를 사용해 보자.

Dictionary.copy() 명령어를 사용하여 새로운 딕셔너리 변수에 값을 복사했다.

이 후 복사된 데이터의 내용을 변경하고 원본 데이터와 비교를 해 보았다.

print('----------')

vDict = {
  "company": "SM Ent",
  "group": "레드벨벳",
  "groupEn" : "Red Velvet",
  "memberCount" : 4,
  "member": ["아이린,슬기,웬디,조이,예리"]
}

print("딕셔너리 Dintionary items : ", type(vDict), len(vDict), vDict)

print('----------')

vDictCopy = vDict.copy()
vDictCopy["group"] = "Red Velvet"

print("딕셔너리 Dintionary items : ", type(vDict), len(vDict), vDict)
print("딕셔너리 Dintionary items : ", type(vDictCopy), len(vDictCopy), vDictCopy)

print('----------')

아래의 결과화면을 보면 원본데이터에는 영향이 없음을 알 수 있다.

딕셔너리의 복사기능을 사용하여 데이터를 가공하면 원본 데이터는 백업으로 남길 수 있다.

데이터 가공이 잘못 되더라도 원본이 남아있기 때문에 걱정할 필요가 없다.

반응형

댓글