3.4 딕셔너리(Dictionary) Last updated: 2023-10-25 18:29:55

집합 자료형은 여러개의 데이터를 한 번에 저장하고 관리하는 데이터형으로 각 요소는 앞에서 배운 정수, 실수, 문자열 등이 될 수 있고, 클래스 객체나 다른 집합 데이터가 될 수도 있다. 파이썬은 집합 데이터를 다룰 수 있는 편리한 기능들을 제공하고 포함할 수 있는 데이터의 종류도 더 유연한 장점을 가지고 있다.

3.4. 딕셔너리(Dictionary)

딕셔너리는 우리말로 사전이라는 뜻을 갖는다. 사전은 용어를 가나다라 혹은 알파벳 순으로 정렬하여 찾기 쉽게 하고, 용어에 대한 보다 자세한 설명을 제공한다. 프로그램에서 딕셔너리는 용어에 해당하는 중복되지 않는 키 값을 세트와 같이 관리하고, 키 값에 매핑 되는 값 객체를 관리할 수 있도록 고안된 집합 데이터 구조이다.


3.4.1 딕셔너리 생성

딕셔너리를 생성하는 가장 쉬운 방법은 딕셔너리 객체를 생성하는 것이다. 빈 딕서너리를 생성한 후 원하는 키와 값을 추가하면서 사용할 수 있다.


A. 빈 딕셔너리 생성

빈 딕셔너리 객체를 생성하는 방법에 대해 알아보자.

형식

dict_var = dict()

파라미터

• dict_var (dict) : 생성되어 저장된 dict 변수

반환

(dict) 비어 있는 딕셔너리 객체 생성 결과

[예제 3- 128] 딕셔너리 클래스 객체 생성하기

# [1] dict 객체를 생성하면 빈 딕셔너리 객체가 생성된다.
basket = dict()
print(type(basket), basket)

[결과]

<class 'dict'> {}

[예제 3- 129] 기호 이용한 빈 딕셔너리 생성하기

# [2] {} 집합 기호를 이용한 딕셔너리 생성. 결과는 동일한다.
basket = {}
print(type(basket), basket)

[결과]

<class 'dict'> {}


B. 키-값과 함께 딕셔너리 생성

추가할 키와 값을 알고 있는 경우 dict 객체의 생성자에 인자로 전달하고 객체를 생성할 수 있다.

형식

dict(key1=value1, key2=value2, …)

파라미터

• key1 (object) : 딕셔너리의 첫 번째 항목에 해당하는 키
• value1 (object) : 딕셔너리의 첫 번째 키에 해당하는 값 혹은 객체
• key2 (object) : 딕셔너리의 두 번째 항목에 해당하는 키
• value2 (object) : 딕셔너리의 두 번째 키에 해당하는 값 혹은 객체

반환

(dict) 입력된 키와 값을 이용해 생성한 딕셔너리 객체 결과를 반환한다.

다음은 키와 값을 이용해 딕셔너리 자료형을 생성하는 예제이다.


[예제 3- 130] 키와 값으로 딕셔너리 객체 생성하기

basket = dict(apple=5, banana=3, orange=1)
basket

[결과]

{'apple': 5, 'banana': 3, 'orange': 1}

apple, banana, orange 문자열을 입력하고 개수를 숫자로 함께 입력하고 dict 객체를 생성한다.


[예제 3- 131] 키 문자열 입력시 오류 발생하기

basket = dict('apple'=5, 'banana'=3, 'orange'=1)
basket

[결과]

SyntaxError: expression cannot contain assignment, perhaps you meant "=="?

주의할 것은 딕셔너리를 생성할 때 키에 대한 인자값을 문자열로 넘기면 오류가 발생된다.



C. 리스트를 이용해 딕셔너리 생성

키와 값이 짝 지어진 집합 데이터 형식으로는 딕셔너리를 바로 생성할 수 있다. 집합의 주의할 점은 키와 값의 두 쌍으로 이루어져 있어야 가능하다는 점이다.

형식

dict_var = dict([[key1, value1], [key2, value2], …])

파라미터

• key1 (object) : 딕셔너리의 첫 번째 항목에 해당하는 키
• value1 (object) : 딕셔너리의 첫 번째 키에 해당하는 값 혹은 객체
• key2 (object) : 딕셔너리의 두 번째 항목에 해당하는 키
• value2 (object) : 딕셔너리의 두 번째 키에 해당하는 값 혹은 객체

반환

(dict) 입력된 키와 값을 이용해 생성한 딕셔너리 객체 결과

[예제 3- 132] 리스트로 딕셔너리 생성하기

fruit_num = [['apple', 5], ['banana', 3], ['ornage', 1]]
basket = dict(fruit_num)
basket

[결과]

{'apple': 5, 'banana': 3, 'ornage': 1}

리스트로 키와 값을 전달하면 딕셔너리를 생성할 수 있다.


[예제 3- 133] 튜플로 딕셔너리 생성하기

fruit_num = [('apple', 5), ('banana', 3), ('ornage', 1)]
basket = dict(fruit_num)
basket

[결과]

{'apple': 5, 'banana': 3, 'ornage': 1}

튜플로 키와 값을 전달해도 딕셔너리를 생성할 수 있다.


[예제 3- 134] 인자 갯수에 따른 오류

fruit_num = [('apple', 5, 10), ('banana', 3), ('ornage', 1)]
basket = dict(fruit_num)

[결과]

ValueError: dictionary update sequence element #0 has length 3; 2 is required

첫 번째 인자가 (‘apple’, 5, 10)으로 3개의 인자가 입력되면 오류가 발생하였다.



D. 새로운 항목 추가

이미 생성된 딕셔너리에 새로운 키와 값을 할당하려면 다음과 같다. 딕셔너리 변수에 새로운 키를 입력하고 = 연산자를 이용해 값을 할당한다. 이미 존재 하지 않는 경우 새로 추가될 것이고, 만일 이미 키가 존재한다면 이전의 값을 새로운 값으로 대체할 것이다.

형식

dict_var[key] = value

파라미터

dict_var은 딕셔너리 객체이다.
• key (string) : 딕셔너리에 추가할 항목의 키
• value (object) : 딕셔너리에 추가할 키에 해당하는 값

다음은 딕셔너리에 새로운 키와 값을 추가하는 예제이다.


[예제 3- 135] 딕셔너리 객체에 항목 추가하기

fruit_num = [['apple', 5], ['banana', 3], ['ornage', 1]]
basket = dict(fruit_num)

basket['melon'] = 2
print(basket)

[결과]

{'apple': 5, 'banana': 3, 'ornage': 1, 'melon': 2}

딕셔너리에 melon이라는 키와 값 2를 새로 추가하였다.



3.4.2 딕셔너리 키 다루기


A. 딕셔너리 키 목록

딕셔너리의 키를 목록으로 가져기 위해서는 keys( ) 메서드를 사용하면 된다. keys( ) 메서드를 호출하면 dict_keys 형식의 키 목록이 반환된다. dict_keys 형식은 집합형 이므로 for 문의 입력으로 바로 사용할 수 있다.

형식

key_list = dict_var.keys()

파라미터

dict_var은 딕셔너리 객체이다.

반환

(list) 딕셔너리의 키 리스트가 반환된다.

다음은 딕셔너리에서 키 목록을 조회하고 출력하는 예제이다.


[예제 3- 136] 딕셔너리 for 반복하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
basket_keys = basket.keys()
print("keys:", basket_keys)
print("key len:", len(basket_keys))

for i, kind in enumerate(basket_keys):
    print(i, "-", kind)

[결과]

keys: dict_keys(['fruit', 'beverage'])
key len: 2
0 - fruit
1 - beverage

dict_keys를 for 문의 iterator로 사용하여 반복할 수 있다.



B. 딕서터리 키 목록 리스트 변환

딕서너리의 dict_keys를 리스트로 변환할 수 있다.

[예제 3- 137] 딕셔너리 키 목록 조회하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
# [1] 딕셔너리 키를 리스트로 변환
basket_key_list = list(basket.keys())
print("key list:", basket_key_list)

# [2] 리스트와 같이 인덱스로 키값 접근 가능
print("first key is", basket_key_list[0])

# [3] 리스트를 for 문의 iterator로 사용
for key in basket_key_list:
    # 키 값과 키에 해당하는 값을 출력
    print(key, 'has values such as', basket[key])

[결과]

key list: ['fruit', 'beverage']
first key is fruit
fruit has values such as ['apple', 'banana']
beverage has values such as ['coke', 'juice']

딕셔너리에서 keys( ) 메서드로 키 목록을 리스트로 받아서 for 문의 반복자로 사용할 수 있다.



C. 딕셔너리에 키가 존재하는지 검사

딕셔너리에 키 값이 존재하는지 검사할 때는 in 명령어를 사용한다.

형식

key_string in dict_var
key_string in dict_var.keys()

파라미터

dict_var은 딕셔너리 객체이다.

• key_string (string) : 검색할 키값

반환

(bool) 입력된 키와 값을 이용해 생성한 딕셔너리 객체 결과이다. True 혹은 False 값이다.

[예제 3- 138] 딕셔너리 키 검사하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
if 'cookie' in basket:
    print("cookie is exist")
else:
    print("cookie is not exist")

[결과]

cookie is not exist

dict_keys에 in 명령어를 사용해도 결과는 동일하다.


[예제 3- 139] keys( ) 메서드로 키 목록 조회하여 키 검사하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
if 'cookie' in basket.keys():
    print("cookie is exist")
else:
    print("cookie is not exist")

[결과]

cookie is not exist


D. 딕셔너리에서 키 삭제

딕셔너리에서 특정 키와 그에 해당하는 값을 함께 삭제하려면 del 명령을 사용한다.

형식

del dict_var[key]
dict_var.pop(key)

파라미터

dict_var은 딕셔너리 객체이다.

• key (string) : 삭제할 항목의 키

[예제 3- 140] del 명령으로 딕셔너리 항목 삭제하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
print(basket)
del basket['beverage']
print(basket)

[결과]

{'fruit': ['apple', 'banana'], beverage=['coke', 'juice']}
{'fruit': ['apple', 'banana']}

키와 값을 삭제하는 다른 방법은 pop( ) 메서드를 이용하는 것이다.


[예제 3- 141] pop( ) 메서드로 항목 삭제하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
basket.pop('beverage')
print(basket)

[결과]

{'fruit': ['apple', 'banana']}


F. 모든 항목 삭제

딕셔너리에 있는 모든 항목을 삭제하고 초기화 하려면 clear( ) 메서드를 사용한다. clear( ) 메서드를 사용하면 딕셔너리 변수는 삭제되지 않고, 그 안에 포함된 모든 키와 값을 비운다.

형식

dict_var.clear()

파라미터

dict_var은 딕셔너리 객체이다.

[예제 3- 142] clear( ) 메서드로 딕셔너리 모든 항목 삭제하기

basket = dict(fruit=["apple", "banana"], beverage=["coke", "juice"])
basket.clear()
print(type(basket), basket)

[결과]

<class "dict"> {}

clear( ) 메서드를 사용하면 딕셔너리의 모든 내용을 삭제할 수 있다.



3.4.3 딕셔너리 값 다루기

딕셔너리는 키 값과 그에 매핑 되는 값을 관리하는 용도로 사용한다. 키는 다른 의미로 그룹을 의미할 수 있다. 만일 바구니에 먹을 것들이 여러가지 있는데, 여러 종류의 과일과 마실 음료수, 그리고 과자류가 들어 있다고 한다면 과일, 음료수, 과자 등이 키가 되고 그에 해당하는 항목들이 값이 될 수 있다. 단, 항목들이 불특정 다수라면 값 부분에 리스트를 추가한다.


A. 키로 값을 얻어오기

배열과 같이 대괄호(’[]’) 사이에 키값을 입력하면 그에 해당하는 값이 반환된다.

형식

dict_var[key]

파라미터

dict_var은 딕셔너리 객체이다.

• key (string) : 조회할 항목의 키

반환

(object) 딕셔너리에서 키에 해당하는 값 객체

[예제 3- 143] 키로 딕셔너리의 항목 가져오기

# [1] 과일과 음료수 종류를 위한 딕셔너리를 만들었다.
basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])

# [2] fruit에 해당하는 값이 무엇인지 확인해보자.
basket['fruit']

[결과]

['apple', 'banana']

get( ) 메서드를 사용해도 동일하게 값을 얻어온다. get( ) 메서드는 두 번째 인자에 key에 해당하는 값이 없을 경우 반환할 값을 지정할 수도 있다.

형식

dict_var.get(key, default)

파라미터

dict_var은 딕셔너리 객체이다.

• key (string) : 조회할 항목의 키
• default : 키에 해당하는 값이 없을 경우 반환할 값, 지정하지 않으면 None 값이 반환된다.

반환

(object) 키에 해당하는 값을 반환한다. 키가 존재하지 않을 경우 default값을 반환한다.

[예제 3- 144] get( ) 메서드로 딕셔너리 값 가져오기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
basket.get('fruit')

[결과]

['apple', 'banana']

get( ) 메서드로 딕셔너리의 값을 가져올 때 키가 없을 경우 반환되는 기본 값을 지정하려면 두 번째 인자로 값을 지정하면 된다.


[예제 3- 145] get( ) 메서드에서 값이 없을 때 기본값 지정하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
basket.get('vegetable', ['broccoli'])

[결과]

['broccoli']


B. 리스트 형식의 값에 항목 추가하기

위와 같이 값이 리스트 형식이라면 다음과 같이 리스트 연산을 수행할 수 있다.

형식

dict_var[key].append(value)

파라미터

dict_var은 딕셔너리 객체이다.

• key (string) : 값을 추가할 리스트를 가리키는 키
• value (object) : 선택한 딕셔너리 값에 해당하는 리스트에 추가할 값 혹은 객체

[예제 3- 146] 딕셔너리에 append( ) 메서드로 항목 추가하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
fruit = basket['fruit']
fruit.append('orange')

print("basket:", basket['fruit'])
print("fruit:", fruit)

[결과]

basket: ['apple', 'banana', 'orange']
fruit: ['apple', 'banana', 'orange']

딕셔너리 fruit에 해당하는 리스트를 조회하여 새로운 orange라는 항목을 추가한다. fruit 객체와 basket["fruit"]의 값이 동일하다. 왜냐하면 basket["fruit"]로 얻어온 값은 참조변수 이므로 이 변수에 값을 변경하면 원본의 객체값도 함께 변경된다.

여기서 주의할 점이 있다. 값으로 반환된 리스트는 참조 객체 이므로 반환된 리스트에 변경을 가하면 원래 딕셔너리의 값도 같이 변경된다. 만일 딕셔너리와 상관없이 반환된 리스트를 변경하려면 어떻게 해야 할까? 이때는 copy( ) 메서드를 사용한다.


[예제 3- 147] 객체를 copy( ) 하여 복사 후 값 수정하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'])
fruit = basket['fruit'].copy()
fruit.append('orange')

print("basket:", basket['fruit'])
print("fruit:", fruit)

[결과]

basket: ['apple', 'banana']
fruit: ['apple', 'banana', 'orange']

copy( ) 메서드를 이용해 basket의 fruit 객체를 복사하고 orange 항목을 추가하였다. basket객체의 원본 fruit 객체와 copy( )메서드로 복사한 객체의 내용이 서로 다른 것을 확인할 수 있다.



C. 값을 변경하기

키와 값이 존재하는데 값의 내용을 대체하고 싶을 때 update( ) 메서드를 사용한다.

형식

dict_var.update({key1:value1, key2:value2, …})

파라미터

dict_var은 딕셔너리 객체이다.

• key1 (string) : 값을 업데이트할 첫 번째 항목의 키
• value1 (object) : 업데이트 하려고 하는 값으로 첫 번째 키에 대응되는 값 혹은 객체
• key2 (string) : 값을 업데이트할 두 번째 항목의 키
• value2 (object) : 업데이트 하려고 하는 값으로 두 번째 키에 대응되는 값 혹은 객체

[예제 3- 148] update( ) 메서드로 딕셔너리 값 변경하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)
print('price:', basket['price'])

# 값 할당
basket.update({'price':5400})
print('price updated:', basket['price'])

[결과]

price: 5000
price updated: 5400

update( ) 메서드 대신 딕셔너리에 키에 해당하는 값을 = 연산자를 이용해 할당 할 수도 있다.

형식

dict_var[key] = item_value

파라미터

dict_var은 딕셔너리 객체이다.

• key (string) : 값을 업데이트할 항목의 키
• item_value (object) : 업데이트 하려고 하는 값으로 키에 대응되는 값 혹은 객체

[예제 3- 149] 딕셔너리 값 입력하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)
print('price:', basket['price'])

# 값 할당
basket['price'] = 5400
print("price updated:", basket['price'])

[결과]

price: 5000
price updated: 5400

딕셔너리에서 []를 이용해 키에 대한 값을 업데이트할 수 있다. 이 방법을 사용하는 경우 키에 대한 값이 딕셔너리에 이미 존재하는 경우 기존 값이 수정되고, 만일 키가 존재하지 않는 경우 새로 항목일 추가된다.


update( ) 메서드를 이용하면 딕셔너리 형식으로 입력하기 때문에 한번에 여러 개를 입력할 수도 있다.

형식

dict_var.update({key1:value1, key2:value2, …})

파라미터

dict_var은 딕셔너리 객체이다.

• key1 (string) : 값을 업데이트할 첫 번째 항목의 키
• value1 (object) : 업데이트 하려고 하는 첫 번째 키에 키에 대응되는 값 혹은 객체
• key2 (string) : 값을 업데이트할 두 번째 항목의 키
• value2 (object) : 업데이트 하려고 하는 두 번째 키에 키에 대응되는 값 혹은 객체

[예제 3- 150] update( ) 메서드로 여러 개 항목 업데이트하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

# price값은 5400으로 변경하고 date의 키와 값을 새롭게 추가했다.
basket.update({'price':5400, 'date':'2023-12-31'})
print(basket)

[결과]

{'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 5400, 'date': '2023-12-31'}


3.4.4 딕셔너리를 이용한 반복문

딕셔너리를 이용해 for 반복문을 동작 시킬 수 있다. 키 값에 대해 반복을 하는 것이다.


A. 딕셔너리를 반복자로 활용

딕셔너리를 직접 반복자로 사용하면 딕서너리의 키가 하나씩 반환된다.

형식

for item_key in dict_var:
    # do something with key

파라미터

dict_var은 딕셔너리 객체이다.

• item_key (string) : 딕셔너리의 각 항목에 대항하는 key값

[예제 3- 151] 딕셔너리 for 반복하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

for item in basket:
    print(item)

[결과]

fruit => ['apple', 'banana']
beverage=> ['coke', 'juice']
price => 5000

딕셔너리 객체를 직접 이용해 for 문에 반복자로 사용하면 키와 값이 함께 반환된다.



B. 딕셔너리의 dict_key를 반복자로 활용

딕서너리의 keys( ) 메서드를 이용해 dict_key를 얻어와서 반복자로 사용해도 동일한 결과를 얻을 수 있다.

형식

for item_key in dict_var.keys():
    # do something with key

파라미터

dict_var은 딕셔너리 객체이다.

• item_key (string) : 딕셔너리의 각 항목에 대항하는 key값

[예제 3- 152] 딕셔너리 키 목록으로 for 반복하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

for item in basket.keys():
    print(item)

[결과]

fruit
beverage
price

딕셔너리에서 kyes( ) 메서드로 키 리스트를 얻어와 for 문을 반복 실행할 수 있다.



C. 딕셔너리의 dict_values를 반복자로 활용

딕서너리의 values( ) 메서드를 이용해 dict_values를 반복자로 사용할 수 있다. 단, 이 방법에서 key는 알 수 없다.

형식

for item_value in dict_var.values():
    # do something with value

파라미터

dict_var은 딕셔너리 객체이다.

• item_value (object) : 딕셔너리의 각 항목에 대항하는 값

[예제 3- 153] 딕셔너리 값 목록으로 for 반복하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

for item in basket.values():
    print(item)

[결과]

['apple', 'banana']
['coke', 'juice']
5000

딕셔너리의 values( ) 메서드를 이용해 for 반복문의 반복 실행이 가능하다.



D. 딕셔너리의 키와 값을 함께 얻어내는 방법

keys( ) 메서드와 values( ) 메서드를 같이 사용해 한꺼번에 키와 값을 반복자로 얻어올 수 있다. 단, 두 개의 변수를 한번에 얻어오기 위해 zip( ) 메서드를 이용해야 한다. zip( ) 메서드는 여러 개의 반복 가능한 객체를 인자로 받아 차례로 접근 할 수 있도록 튜플 형태로 반환된다.

형식

for key, value in zip(dict_var.keys(), dict_var.values()):
    # do something with key, value

파라미터

dict_var은 딕셔너리 객체이다.

• key (string) : 딕셔너리의 반복되는 항목 중에서 현재의 항목의 키
• value (object) : 딕셔너리의 반복되는 항목 중에서 현재의 항목의 값

[예제 3- 154] zip( ) 함수로 키와 값 목록으로 for 반복하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

for key, value in zip(basket.keys(), basket.values()):
    print(key, "=>", value)

[결과]

fruit => ['apple', 'banana']
beverage=> ['coke', 'juice']
price => 5000

딕셔너리에서 keys( ) 메서드와 values( ) 메서드로 얻어온 두 개의 리스트 객체를 zip( ) 메서드를 짝을 이뤄 for 문을 반복할 수 있다.



3.4.5 딕셔너리 복사

딕셔너리 개체를 다른 변수에 할당하거나 복사하는 방법에 대해 설명한다.


A. 딕셔너리 변수 대입

다음은 딕셔너리 변수 basket를 bowl에 대입하고, bowl의 price 값을 변경하였다. 이 때 두 변수 모두 같은 곳을 바라보고 있기 때문에 basket의 price도 같이 변경된다.

[예제 3-155] 딕셔너리 참조 객체 값 변경하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

# 새로운 변수에 대입
bowl = basket
print("# Original")
print("-Basket", basket)
print("-Bowl", bowl)

# 새로운 변수의 값 수정
bowl["price"] = 6000

print("# After Price Changed")
print("-Basket", basket)
print("-Bowl", bowl)

[결과]

# Original
-Basket {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 5000}
-Bowl {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 5000}
# After Price Changed
-Basket {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 6000}
-Bowl {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 6000}

딕셔너리 객체의 참조 변수에 대한 값 변경상황을 알아보기 위한 예제이다. ‘Origial’의 Basket과 Bowl의 price값이 모두 5000이다. ‘After Price Changed’ 이후 bowl의 price에 대한 값을 6000으로 변경하였는데 Basket과 Bowl의 price가 둘 다 6000으로 변경되었다.



B. 딕셔너리 변수 복사

딕셔너리 변수를 새로운 변수에 복사하고 싶은 경우 copy( ) 메서드를 사용한다. 이렇게 하면 두 변수는 별도의 변수가 되어 영향을 미치지 않는다. 결과를 확인하면 basket의 price와 bowl의 price값이 다른 것을 확인할 수 있다.

형식

dict_var.copy( )

파라미터

dict_var은 딕셔너리 객체이다.

반환

(dict) dict_var의 객체가 복제된 객체가 반환되며 별도의 개체이므로 수정하더라도 원본 객체에는 영향을 미치지 않는다.

예시

dict_var2 = dict_var.copy( )

[예제 3-156] 딕셔너리 객체 copy( ) 복제하기

basket = dict(fruit=['apple', 'banana'], beverage=['coke', 'juice'], price=5000)

# 변수 copy()로 복사
bowl = basket.copy()
print("Original")
print("	Basket", basket)
print("	Bowl", bowl)

bowl['price'] = 6000

print("After Price Changed")
print("	Basket", basket)
print("	bowl", bowl)

[결과]

Original
Basket {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 5000}
Bowl {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 5000}
After Price Changed
Basket {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 5000}
bowl {'fruit': ['apple', 'banana'], 'beverage': ['coke', 'juice'], 'price': 6000}

이전과 다르게 copy( ) 메서드로 객체를 복제하면 변수는 서로 독립적으로 동작하여 ‘After Price Changed’ 이후 값을 보면 5000과 6000으로 서로 값이 달라진 것을 확인할 수 있다.