[Python] 09. DICT

Min's Study Note·2023년 11월 7일

Python

목록 보기
10/21

09. DICT

✔️ Dictionary(딕셔너리)

  • 이름(key)과 내용(value)를 연결
  • 순서가 없음, 수정할 수 있음
  • 사전의 이름 = {key1:Value1, key2:Value2, ...}

딕셔너리 자료형은 리스트와 튜플과 다르게 인덱싱과 슬라이싱을 사용할수가 없다.
이유는 딕셔너리는 순서를 가지고 있지 않기 때문.

그래서 특정 위치의 Value 값을 호출할 때 인덱싱과 슬라이싱 대신 변수[Key값] 라고 입력함.

※Key값이 숫자라면 인덱싱과 혼동될 수 있으니 유의!
ex) 변수[1] → '1'이라는 키값의 Value 반환

## dict (키를 이용하여 값을 저장하는 자료형)
## 정수형 인덱스가 아닌 키로 값을 저장하기 때문에 저장된 순서는 무의미
## key는 중복 불가, value는 중복 가능

d = dict()
print(d, type(d))

d = {'a': 1, "b": 2, 'c': 3}
print(d, type(d))

d = {'a': 1, "b": [1, 2, 3], (1, 2): 3}  # key는 immutable, value는 mutable
print(d, type(d))

d = {'a': 1, "b": 2}
print(d)
d['a'] = 100 # 키로 접근해서 값을 수정하기가 용이
print(d)
d['c'] = 200 # 없으면 추가
print(d)
print(d['a'])
# print(d['f']) #없는 키는 참조 불가

for k in d:
  print(k, d[k])

print(d.keys()) # key
print(d.values()) # value
print(d.items()) # key, value

for item in d.keys():
  #print(item, d[item])
  print(item, d.get(item))

print(d.get('a'))
print(d.get('z', 500)) # 없을 경우에는 기본값으로 불러오기 가능

# {} <class 'dict'>
# {'a': 1, 'b': 2, 'c': 3} <class 'dict'>
# {'a': 1, 'b': [1, 2, 3], (1, 2): 3} <class 'dict'>
# {'a': 1, 'b': 2}
# {'a': 100, 'b': 2}
# {'a': 100, 'b': 2, 'c': 200}
# 100
# a 100
# b 2
# c 200
# dict_keys(['a', 'b', 'c'])
# dict_values([100, 2, 200])
# dict_items([('a', 100), ('b', 2), ('c', 200)])
# a 100
# b 2
# c 200
# 100
# 500

딕셔너리 관련 함수

1) Key 모음 가져오기 (keys) - 딕셔너리.keys( )

dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.keys())  #딕셔너리에 있는 Key 값만 불러오기


#아래 결과값을 보면 'dict_keys'문구와 Key값이 같이 출력이 되는데
리스트형태로 변형하면 Key값들이 리스트 형태로 출력됩니다. 
a=dic1.keys()
print(list(a))


##### result #####

dict_keys(['이름', '생일', 'address'])

['이름', '생일', 'address']

2) Value 모음 가져오기 (values) - 딕셔너리.values( )

dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.values())  #딕셔너리에 있는 Value 값만 불러오기

print(list(dic1.values()))  #리스트 형태로 호출


##### result #####

dict_values(['김사전', '0815', 'Seoul'])

['김사전', '0815', 'Seoul']

3) Key, Value 쌍 모음 가져오기 (items) - 딕셔너리.items( )

dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}
print(dic1.items()) #key와 Value 값 모두 불러오기

print(list(dic1.items()))  #리스트 형태로 호출

print(dic1) #전체를 호출하는 것과 items()으로 호출하는 것은 자료형태만 다름


##### result #####

dict_items([('이름', '김사전'), ('생일', '0815'), ('address','Seoul')])
↑ items() 함수를 사용하면 각 항목을 튜플 형태를 가진 리스트로 가져옵니다.

[('이름', '김사전'), ('생일', '0815'), ('address','Seoul')]

{'이름': '김사전', '생일': '0815', 'address':'Seoul'}

4) Key:Value 쌍 모두 지우기 (clear) - 딕셔너리.clear( )

dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}

dic1.clear()  #딕셔너리 안의 모든 요소가 삭제
print(dic1)


##### result #####

{}  #빈 딕셔너리만 출력됩니다.

5) Key로 Value 얻기 (get) - 딕셔너리.get(Key값)

dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}

print(dic1['이름'])  #Key값으로 호출 
print(dic1.get('이름')) #get 함수로 호출
#두 가지 방법 모두 동일한 결과가 출력됩니다.
#그런데 get() 함수를 사용하는 이유는 
#값이 없을 때 None 값으로 확인하기 위해서입니다. 
 
print(dic1.get('전화')) 
#Key의 값을 불러오는데 해당하는 Key가 없는 경우 'None'이라고 호출


##### result #####

김사전
김사전
None
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}

print(dic1['전화'])  #존재하지 않는 Key값을 호출하면 오류 메시지가 뜹니다.


##### result #####

Traceback (most recent call last):
  File "main.py", line 64, in <module>
    print(dic1['전화'])
KeyError: '전화'
dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}

print(dic1.get('전화'))

print(dic1.get('전화','Key 없음'))
#key가 없다고 생각될 때 None이 아닌 특정 값으로 호출하고 싶다면 
#get('key값','디폴트값') 으로 입력 


##### result #####

None
Key 없음

6) 해당 Key가 딕셔너리 안에 있는지 조사하기 (in) - Key값 in 딕셔너리

dic1 = {'이름':'김사전','생일':'0815','address':'Seoul'}

print('전화' in dic1)  # dic1안에 '전화' Key가 있으면True, 없으면False가 출력
print('이름' in dic1)


##### result #####

False
True

(참고) 딕셔너리

0개의 댓글