1. 딕셔너리

파이썬의 딕셔너리는 - 쌍을 저장하는 변경 가능한(mutable) 컬렉션입니다.

 

요약

dict(딕셔너리)
        한 쌍으로 저장되어 관리한다.
        len()를 사용하면 한 쌍을 1로 카운트한다.
        * 키 -  중복 불가능
        * 값 - 중복 가능
        키 값을 주면 그 키의 값을 가지고 온다.

        # 키  해시테이블 값
        # 키로 정보를 요청하면 해시테이블이 값을 찾아와준다.

dict 선언
        dict명{키: 값, 키: 값, 키: 값, ...}

dict 사용
        -추가, 수정
            : 추가와 수정이 동일한 코드이다.
            dict명[키] = 값
            키 값이 기존에 있으면 수정이고, 기존에 없으면 추가이다.
        -삭제
            del dict명[키]

        -검사
            키 in dict명 : 키가 있으면 참
            키 not in dict명 : 키가 없으면 참

 


 

1. 생성

딕셔너리는 중괄호 {} 사용하여 생성하고, - 쌍들은 쉼표 , 구분됩니다.  - 쌍은 콜론 :으로 구분됩니다.

  • 키는 중복 불가능 (set)와 비슷
  • 값은 중복 가능 (dict)과 비슷
dict 선언
        dict명{키: 값, 키: 값, 키: 값, ...}
dic1 = {}
print(dic1)
print(type(dic1))

dic2 = {1: '푸바오', 2: '아이바오', 3: '러바오', 4: '루이바오'}
print(dic2)
print(dic2[2]) # 딕셔너리에서는 대괄호 안에는 키가 들어가야함 => 값(value) 출력
print(dic2[3])

dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'} # 키는 중복x 문자 및 숫자도 가능
print(dic3)
print(dic3['no'])
print(dic3['name'])
더보기

{}

<class 'dict'>

 

{1: '푸바오', 2: '아이바오', 3: '러바오', 4: '루이바오'}

아이바오

러바오

 

{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111'}

1

푸바오

 

 

 

2. 추가 및 수정 (변경가능)

  • 딕셔너리는 변경 가능합니다. 
  • 따라서, 딕셔너리에 키-값 쌍을 추가하거나 제거하거나, 기존의 키의 값을 변경할 수 있습니다.
dict 사용
-추가, 수정
** 추가와 수정이 동일한 코드이다.
            
            dict명[키] = 값 
            키 값이 기존에 있으면 수정이고, 기존에 없으면 추가이다.

 

# 데이터에 없는 키 값을 대괄호에 넣고 값을 입력하면 데이터가 추가된다. (데이터에 순서가 없다)

# 데이터에 없는 키 값을 대괄호에 넣고 값을 입력하면 데이터가 추가된다. (데이터에 순서가 없다)
dic4 = {1:'apple'}
print(dic4)

dic4[100] = 'banana'
print(dic4)

dic4[50] = 'orange'
print(dic4)

del dic4[100]
print(dic4)
더보기

{1: 'apple'}

{1: 'apple', 100: 'banana'}

{1: 'apple', 100: 'banana', 50: 'orange'}

{1: 'apple', 50: 'orange'}

 

# 존재하는 키 값에 새로운 값을 넣어주면 값이 대체된다.(수정된다)

# 존재하는 키 값에 새로운 값을 넣어주면 값이 대체된다.(수정된다)
dic5 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
dic5['no'] = 2
print(dic5)
더보기

{'no': 2, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111'}

 

 

3. 키, 값의 제약

  • 딕셔너리의 키는 변경 불가능한(immutable) 타입이어야 합니다.
  • 예를 들어, 문자열, 정수, 튜플은 딕셔너리의 키로 사용할 수 있지만, 리스트는 딕셔너리의 키로 사용할 수 없습니다. 하지만 딕셔너리의 값은 어떤 타입이든 상관없습니다.
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'} # 키는 중복x 문자 및 숫자도 가능
dic5['no'] = 2
print(dic5)

dic3['점수'] = [90, 100, 50] # 값에 리스트 추가
print(dic3)

dic3[(1,2,3)] = ('가','나','다') # 키(튜플) : 값(튜플 추가)
print(dic3)

#dic3[[1, 2, 3]] = ['라', '마', '바'] #키는 변경 불가능한(immutable) 타입. 리스트가 될 수 없다
#print(dic3)

dic3['과일'] = {'사과':'🍎', '딸기':'🍓', '앵두':'🍒'} # '과일' 키에 값:딕셔너리도 추가 가능
print(dic3)
더보기

{'no': 2, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111'}

{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111', '점수': [90, 100, 50]}

{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111', '점수': [90, 100, 50], (1, 2, 3): ('가', '나', '다')}

{'no': 1, 'userid': 'apple', 'name': '푸바오', 'hp': '010-1111-1111', '점수': [90, 100, 50], (1, 2, 3): ('가', '나', '다'), '과일': {'사과': '🍎', '딸기': '🍓', '앵두': '🍒'}}

 

4. 함수와 메서드

딕셔너리는 여러 함수와 메소드를 가지고 있습니다.

 

# len(): 딕셔너리의 길이(키-값 쌍의 개수)를 구할 수 있는 함수

# len(): 딕셔너리의 길이(키-값 쌍의 개수)를 구할 수 있는 함수
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(len(dic3)) # 키와 값이 하나의 쌍

 

# keys(): 딕셔너리의 모든 키를 반환하는 메서드

# keys(): 딕셔너리의 모든 키를 반환하는 메서드
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.keys()) # 키만 뽑아서 리스트로 출력
더보기

dict_keys(['no', 'userid', 'name', 'hp'])

 

# values(): 딕셔너리의 모든 값을 반환하는 메서드

# values(): 딕셔너리의 모든 값을 반환하는 메서드
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.values())
더보기

dict_values([1, 'apple', '푸바오', '010-1111-1111'])

 

# items(): 딕셔너리의 모든 키-값 쌍을 반환하는 메서드 (튜플로 반환)

# items(): 딕셔너리의 모든 키-값 쌍을 반환하는 메서드 (튜플로 반환)
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.items())
더보기

dict_items([('no', 1), ('userid', 'apple'), ('name', '푸바오'), ('hp', '010-1111-1111')])

 

# get(): 특정 키의 값을 반환. 만약 그 키가 딕셔너리에 없으면, None을 반환하는 메서드

# get(): 특정 키의 값을 반환. 만약 그 키가 딕셔너리에 없으면, None을 반환하는 메서드
print(dic3.get('userid'))
print(dic3.get('age'))
print(dic3.get('userid', '알 수 없음'))
print(dic3.get('age', '알 수 없음')) # get 사용시 존재하지 않는 키에 값을 입력하면 입력한 값이 출력


dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3['userid'])
#print(dic3['age']) # 딕셔너리에 존재하지 않는 키를 입력하면 에러 KeyError: 'age'
더보기

apple

None

apple

알 수 없음

 

apple

 

# pop(): 특정 키의 값을 제거하고 반환. 만약 그 키가 딕셔너리에 없으면, KeyError가 발생하는 메서드

# pop(): 특정 키의 값을 제거하고 반환. 만약 그 키가 딕셔너리에 없으면, KeyError가 발생하는 메서드
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print(dic3.pop('hp'))
print(dic3)
더보기

010-1111-1111

{'no': 1, 'userid': 'apple', 'name': '푸바오'}

 

 

5. 멤버십 테스트

in 연산자를 사용하여 딕셔너리 특정 키가 있는지 확인할  있습니다.

# in : 딕셔너리 안에 키 존재 여부 확인
dic3 = {'no':1, 'userid':'apple', 'name':'푸바오', 'hp':'010-1111-1111'}
print('hp' in dic3)
print('age' in dic3)
더보기

True

False