1. 딕셔너리(==딕트)
- 딕셔너리는 리스트와 비슷하지만 다른점이 있다.
항목의 순서를 따지지 않고, 0 또는 1과 같은 오프셋 값으로 항목 선택이 불가하다.
오프셋 값 대신 값에 상응하는 키를 지정한다.
- {} 안에 콤마로 구분한 키:값 쌍을 지정한다.
- 딕셔너리 생성하기 : dict()
- 항목 추가/변경 : key
딕셔너리에 항목을 추가하려면 키와 값을 할당해주면 된다.
딕셔너리의 키는 고유한 값을 가져야 한다.
- 항목 얻기 : get(0
딕셔너리명.get(키)
>> a라는 키의 값이 딕셔너리내의 존재하지 않을 경우엔
Not a python을 출력
- 모든 키 얻기 : keys()
딕셔너리명.keys()
- 모든 값 얻기 : values()
- 모든 키- 값 얻기 : items()
- 길이 얻기 : len()
- 결합하기 : update()
- 삭제하기 : del 딕셔너리명['키값']
- 키로 항목 가져온 뒤 삭제하기 : pop()
- 모든 항목 삭제하기 : clear()
딕셔너리명.clear()
- 키 멤버십 테스트 : in
2. 얕은 복사와 깊은 복사
딕셔너리 값이 불변이면 얕은 복사가 정상적으로 작동하나,
가변이면 깊은 복사를 사용해야 한다.
(1) 얕은 복사
: a=[1,2]
b=a[:]
# a를 복사한 객체를 하나 생성하고, b가 그 객체를 참조한다.
b.append(3)를 하게 되면
b가 참조하는 객체에 3을 추가하는 것이다.
>> a가 참조하고 있는 객체 자체를 복사하고 b가 그 객체를 가리킨다. (얕은 복사)
>> 단순할당은 a가 참조하는 걸 b도 참조하는 것이다.
즉 화살표가 가리키는 곳이 똑같다.
얕은 복사는 새 복합 객체를 만들고 원본 객체 내에 있는 오브젝트에 대한 참조를 삽입한다.
>> 10과 11를 참조하는 객체를 a[0]이 참조하게 된다.
b는 여전히 [1,2]와 [3,4]를 참조하는 객체를 잠조하고 있다.
(2) 깊은 복사 : 참조에 대한 재귀적 복사
깊은 복사는 새 복합 객체를 만들고 원본 객체 내에 있는 객체에 대한 복사를 재귀적으로 삽입한다.
import copy
b=copy.deepcopy(a) : 형식
깊은 복사를 하게 되면 얕은 복사에서 할 수 없는 연산을 할 수 있다.
두 복사본이 공유하려고 한 데이터에 대해서도 너무 많은 복사를 할 수 있다.
'여니의 프로그래밍 study > 파이썬' 카테고리의 다른 글
[#8장 연습문제] 처음 시작하는 파이썬 8장 연습문제 (0) | 2021.01.05 |
---|---|
[#8.2 파이썬 기초] 딕셔너리와 셋2 (0) | 2021.01.05 |
[#7 파이썬 기초] 처음으로 시작하는 파이썬 연습문제 풀어보기 (0) | 2021.01.04 |
[#7 파이썬 기초] 튜플과 리스트에 대해 알아보자 (0) | 2021.01.04 |
[#6 파이썬 기초] 파이썬 for문과 while문에 대해 알아보자 (0) | 2021.01.04 |