[python]_딕셔너리

Hi K·2022년 10월 6일
0

파이썬기초

목록 보기
4/12

딕셔너리(Dictionary)

▶ 문법 기호/함수 : {key1 : value1, key2 : value2, key3 : value3 ... } / 함수 : dict()
▶ key로 가질 수 있는 데이터 타입 : 문자, 숫자, 튜플(Tuple)
▶ value로 가질 수 있는 데이터 타입 : 문자, 숫자, 리스트(List), 딕셔너리(Dict) ...
▶ 아이템 = key&value 하나의 쌍
▶ 종류
아이템이 없는 딕셔너리
1차원 딕셔너리
다차원 딕셔너리
▶ 특징
key, value의 차이점
* 인덱스 번호를 가지지 않는다.

1. 생성하기

  • 딕셔너리 생성하기
  • 문법기호 : {k1:v1, k2:v2 ....}
    d1 = {1:10, 2:20, 3:30}
    type(d1)

  • dict() 를 이용해서 생성할수도 있다
    d2 = dict()
    d2

  • 2차원 자료를 이용해 딕셔너리로 변환 가능
    x = [['a', 'b'],
    ['a1','b1'],
    ['a2','b2']]
    type(x)

  • 딕셔너리로 변환
    dict(x)

  • 딕셔너리의 value값에 들어갈 수 있는 자료에는 제약이 없다
    {1:[1,2,3], 2:{'a':'b'}}

  • key와 value의 차이
    • key값에는 중복된 자료가 못 들어가며
    • 만약 선언단계에서 중복된 key로 선언시 가장 마지막 하나만 반영된다.
      {"name":"홍길동", 'name':'임꺽정', ' name2':'임꺽정'}

2. 인덱싱

인덱싱 문법 기호
일차원 vs 다차원 인덱싱
딕셔너리 내장함수로 인덱싱

  • 기존의 인덱싱 방법 : 객체[인덱싱번호]
    a = [1, 2, 3]
    a[0]

  • 문자, 리스트타입 인덱싱과의 차이점 : 기준값이 인덱스번호가 아닌 key값을 사용
    d1 = {'a':10, 'b':20, 'c':30}

  • 인덱싱 방식 : 없는 key값을 조회하면 에러
    d1['c']

  • 에러를 씹어야 하는 경우
    내장함수 .get()을 사용하면, 없는 키값으로 조회해도 에러가 나지 않는다.
    d1.get('bd')

  • 딕셔너리는 슬라이싱이 불가능하다

  • 슬라이싱 대신 반복문을 사용해야 한다.
    d1['a':'c']

<< 연습문제 >>

아래와 같은 다차원 딕셔너리를 만들고 제시한 값을 출력해보세요.
{'a' : [1, 2, 3], 'b' : 100, 'c' : {'key1' : ['파인애플', '포도', '바나나'], 'key2' : (55, 66)}}

  • 1) 3 출력하기
  • 2) ['파인애플', '포도', '바나나']
  • 3) 포도 출력하기
  • 4) 55 출력하기

3. 아이템 추가하기

- 인덱싱 방식으로 새로운 아이템 추가
- 메소드 : update()

d1 = {'a':1, 'b':2, 'c':3}

  • 새로운 key값(인덱싱)에 value값을 할당하여 아이템 추가
    d1['d'] = 4
    d1

  • 기존에 존재하는 key값에 대해서 value를 할당하면 값이 새롭게 갱신됨
    d1['a'] = 10
    d1

  • 하나 이상의 아이템 (key & value) 추가/수정 : 딕셔너리자료.update()
    추가할 아이템 타입 : 딕셔너리를 직접 넣어줘도 되고
    딕셔너리로 변환이 가능한 리스트를 넣어줘도 됩니다.
  • 'e':10, 'z':40, 'v':100
    d1.update({'e':10, 'z':40, 'v':100})
    d1

  • 리스트로 처리하기
    data = [['b',10], ['e',50], ['f',100]]
    d1.update(data)
    d1

  • 딕셔너리로 변환되는 리스트 형식이기 때문에 가능합니다.
    dict(data)

  • 딕셔너리를 리스트로 돌릴때는 키값만 복원됩니다.
    list(d2)

profile
파이썬초짜의 기록

0개의 댓글