- 사전은 키와 값이 하나의 쌍으로 이루어진 데이터들을 모아 놓은 특별한 형태의 자료형입니다. 제일 마지막에 배우는 자료형인데, 실제로 코딩에서 아주 많이 사용하게 됩니다. 사전을 만드는 방법, 사전에 데이터 추가/삭제하는 방법등을 학습하고, 사전 메소드를 어떻게 실제 코딩에서 사용하는지를 학습합니다.
1. 사전 만들기
- 중복된 데이터가 없고 순서 개념도 없습니다.
- 키(key) 와 값(value)의 쌍으로 구성되어 있습니다.
- '키'는 유일해야 하고 '값'은 얼마든지 있을 수 있습니다.
- 집합은 순서 개념이 없어서 인덱스가 없는데 사전은 '키'가 인덱스 역할을 합니다.
빈 사전 만들기
- 공집합 기호 이용하기 : D = {}
- dict() 함수 이용하기 : D= dict()
사전의 '키' 를 사용할 때 주의할 점
- immutable한 자료형만 키로 사용할 수 있습니다.
아홉 가지 자료형은 모두 사전의 ' 값'이 될 수 있습니다.
다른 자료형의 데이터를 사전으로 변환하기
- 사전이 아닌 객체를 사전으로 변환할 수 있는 경우
- 리스트(크기 2인 튜플 또는 리스트구성)
- 튜플(크기 2인 튜플 또는 리스트구성)
- zip()함수를 이용해서 다른 자료형으로부터 사전을 만들 수 있습니다.
- 인수로 두개의 iterable 데이터를 받습니다.
- 첫 번째 인수: 키 , 두 번째 인수: 값
- 크기가 다르면 크기에 맞춰서 사전이 만들어 집니다
두 사전이 같은지 비교하기
- 같은 키와 같은 값의 쌍이 저장되어 있으면 하나로 간주
2. 사전은 '키'를 인덱스로 사용하고 슬라이스는 할 수 없습니다.
3. 사전은 mutable 객체입니다.
- 사전은 변경 가능한 객체이다.
- '키:값' 쌍들을 추가할 수있고, 있던 데이터를 삭제할 수도 있다. 수정도 가능하다.
- 이미 사전에 저장된 '키'는 수정할 수 없고, '값'만 수정이 가능하다.
사전에 새로운 데이터를 추가하거나 기존의 데이터 수정하기
- 사전명[새로운 키] = 값
사전에서 원소 삭제하기
- del 사전명[키]
사전을 통째로 삭제하기
- del 사전명
4. 사전에 in, not in 연산자 사용하기( + , *는 사용할 수 없습니다.)
- 사전은 집합의 일종
- in,not in 사용 가능한데 기준은 '키'가 된다.
5. 사전에 함수 적용하기 - len(), max(), min(), sum(), sorted() ,reversed()
- 사전에서 중요한 것은 '키'이다.
- reversed() 함수는 사전에 적용될 수 없다.
6. 사전 메소드
- 11개 가 있다.
사전 비우기 - clear() 메소드
- clear() 메소드는 사전 안의 모든 원소를 삭제하고 빈 사전으로 만듭니다.
사전 복사하기 - copy() 메소드
- 사전의 복사본을 만드는 메소드
iterable 객체를 '키' 로 하는 사전 만들기 - fromkeys() 메소드
- 인수를 한 개 또는 두 개를 가질 수 있다.
- 인수들을 이용해서 만든 사전을 반환해 준다.
- 첫번째 인수는 반드시 iterable 객체가 와야 한다.
- 인수 1개: dict.fromkets(iterable) iterable 데이터가 '키'가 되고 '값'은 모두 None
- 인수 2개: dict.fromkets(iterable, value) iterable 데이터가 '키'가 되고 '값'은 두 번째 인수 value로 초기화된 사전이 반환됩니다.
사전에서 어떤 '키'의 '값' 가져오기 - get() 메소드
- '키' x에 해당하는 '값'을 가져오는 메소드
- 인수 1개: 사전.get(키)
- 인수 2개: 사전.get(키, 키가 없을 경우에 반환하고자 하는 값)
사전에서 값을 가져오거나 새로운 원소를 추가하는 메소드- setdefault() 메소드
- 인수 2개 get 이랑 비슷하나
- 키가 사전에 없다면 사전에 키를 추가해 줍니다. 인수가 1개이면 None이 값으로 들어가고 초기 값이 있다면 그 초기값이 값으로 들어갑니다.
사전에서 원소를 삭제하기 - pop() 메소드, popitem() 메소드
- pop(x)메소드: '키' x에 해당하는 '값'을 반환하고, 해당 키와 값을 삭제하는 메소드
- popitem()메소드: 인수를 갖지 않고 사전에서 하나의 '키:값'이 임의로 선택되어 반환
- 인수 1개: 사전.pop(키)
- 인수 2개: 사전.pop(키, 키가 없을 경우에 반환하고자 하는 값)
사전 합하기 - update() 메소드
- 두 개의 사전을 합하는 메소드
- 인수에 사전을 한 개 넣어야 하고 반환값은 없습니다.
items(), keys(), values() - for 반복문과 함께 사용하면 유용합니다.
- 세 메소드는 모두 인수를 갖지 않고 반환 갑이 모두 iterable 자료형입니다.
- 사전에 있는 모든 원소를 (키, 값)의 쌍으로 가져오기- items () 메소드
- 사전에 있는 원소들을 모두 (키, 값) 튜플의 리스트로 반환해 줍니다.
- 사전에서 키들만 가져오기 - keys()
- 사전에서 값들만 가져오기 - values()
7. 사전과 for 반복문
- 키와 값이 모두 필요하면 item()
- 키만 필요한 경우 keys()
- 값만 필요한 경우 values()
- item(), keys() , values() 메소드들은 모두 반환값이 iterable 자료형이어서 for 반복문에서 바로 이용할 수 있다.
keys() 메소드 - '키'에 대해서 for 반복문 수행하기
- for 반복문에서 in 다음에 사전 이름만 넣어도 알아서 사전의 '키'만을 가져옵니다.
values() 메소드 - '값'에 대해서 for 반복문 수행하기
items() 메소드 - '키'와 '값' 에 대해서 for 반복문 수행하기
8. 사전 내에서 for 반복문 사용하기(Dictionary Com-prehension)
- { x ( 키) : x**2 (값) for in range(1, 6) }
9. 사전 출력하기 (pprint 모듈)
- 한 줄에 원소('키: 값'의 쌍) 한 개씩을 출력
- pprint.pprint(T, width=20, indent=10)
- { '대전': 17.3 ,
- '부산': 10.3 ,
- '대구': 15.3 ,
- (indent)'인천': 16.3 , }
10. 사전의 값으로 mutable 자료형이 저장되는 경우
- 유의할 점 : 복사가 필요한 경우
사전의 값으로 리스트가 저장되는 경우
- friends = {1:['Alice', 'Paul'], 2:['David', 'Cindy', 'Bob'], 3: ['Tom']
- 얕은 복사 : 사전의 copy() 메소드, copy 모듈의 copy() 함수
- 깊은 복사 : copy 모듈의 deepcopy() 함수
사전의 값으로 집합이 저장되는 경우
사전의 값으로 사전이 저장되는 경우
- D= {1:{15:['Alice', 'Paul' ], 20:['David']}, 2:{17:['Cindy'], 25:{'Helen', 'Tom']}}
11. 정리
- 실생활과 밀접한 코딩을 할 때 많이 사용되는 자료형이다. 복잡하다.
'Python 참조 > Python 책정리' 카테고리의 다른 글
Chapter14 파일 입출력 (0) | 2022.05.04 |
---|---|
Chapter13 함수 (0) | 2022.05.04 |
Chapter 11 집합 자료형 (0) | 2022.05.03 |
Chapter10 튜플 (0) | 2022.05.03 |
Chapter9 리스트 자료형[중요] (0) | 2022.05.03 |