Python 참조/Python 책정리

Chapter12 사전 자료형

Snowboarder 2022. 5. 4. 10:34
  • 사전은 키와 값이 하나의 쌍으로 이루어진 데이터들을 모아 놓은 특별한 형태의 자료형입니다. 제일 마지막에 배우는 자료형인데, 실제로 코딩에서 아주 많이 사용하게 됩니다. 사전을 만드는 방법, 사전에 데이터 추가/삭제하는 방법등을 학습하고, 사전 메소드를 어떻게 실제 코딩에서 사용하는지를 학습합니다.

1. 사전 만들기

  • 중복된 데이터가 없고 순서 개념도 없습니다.
  • 키(key) 와 값(value)의 쌍으로 구성되어 있습니다.
  • '키'는 유일해야 하고 '값'은 얼마든지 있을 수 있습니다.
  • 집합은 순서 개념이 없어서 인덱스가 없는데 사전은 '키'가 인덱스 역할을 합니다.

빈 사전 만들기

  1. 공집합 기호 이용하기 : D = {}
  2. dict() 함수 이용하기 : D= dict()

사전의 '키' 를 사용할 때 주의할 점

  • immutable한 자료형만 키로 사용할 수 있습니다.

아홉 가지 자료형은 모두 사전의 ' 값'이 될 수 있습니다.

다른 자료형의 데이터를 사전으로 변환하기

  • 사전이 아닌 객체를 사전으로 변환할 수 있는 경우
    1. 리스트(크기 2인 튜플 또는 리스트구성)
    2. 튜플(크기 2인 튜플 또는 리스트구성)
    3. zip()함수를 이용해서 다른 자료형으로부터 사전을 만들 수 있습니다.
      1. 인수로 두개의 iterable 데이터를 받습니다.
      2. 첫 번째 인수: 키 , 두 번째 인수: 값
      • 크기가 다르면 크기에 맞춰서 사전이 만들어 집니다

두 사전이 같은지 비교하기

  • 같은 키와 같은 값의 쌍이 저장되어 있으면 하나로 간주

 

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