Dictionary 딕셔너리
json과 비슷
순서X | 중복X | 삽입O | 삭제X
구성 key-value
1. 선언
- a = {'name' : 'Lee', 'phone' : '000-0000-0000', 'age' : 19}
- => a : {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19}
- ## 키는 중복X(name덮어쓰기 Park->Lee) 값은 중복O(age값과 favorite값 모두 19)
- b = {'name' : 'Park', 'phone' : '000-0000-0001', 'age' : 19, 'name' : 'Lee', 'favoriteNo': 19}
- => b : {'name': 'Lee', 'phone': '000-0000-0001', 'age': 19, 'favoriteNo': 19}
- c = {0:'Korea', 1:'America', 2:'China'}
- => c : {0: 'Korea', 1: 'America', 2: 'China'}
- d = {'arr' : [1,2,3,4,'a']}=> d : {'arr': [1, 2, 3, 4, 'a']}
타입조회 : <class 'dict'>
2. 조회
a : {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19}
d : {'arr': [1, 2, 3, 4, 'a']}
1) 직접조회(키가 없을 시 에러)
- a["name"] => Lee
- a['school'] => KeyError: 'school' ## 키가 존재하지 않을 때 에러
- d['arr'][1:-1] => [2, 3, 4] ## 값이 배열일 때 슬라이싱가능
2) get메서드로 조회
- a.get("name") => Lee
- a.get("school") => None ## 키가 존재하지 않으면 None반환
3. 추가
추가 전 a: {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19}
- a['city'] = 'Seoul'
- a['rank'] = [1,3,4]
- a['family'] = ('엄마','아빠')
추가 후 a: {'name': 'Lee', 'phone': '000-0000-0000', 'age': 19, 'city': 'Seoul', 'rank': [1, 3, 4], 'family': ('엄마', '아빠')}
4. keys, values, items
반복문이 편리 : 데이터 전후처리, 대량데이터가공에 편리
1) keys 키만 추출하여 반환
- a.keys() =>dict_keys(['name', 'phone', 'age', 'city', 'rank', 'family']) ##set과 비슷한 keyView를 반환
- list(a.keys()) =>['name', 'phone', 'age', 'city', 'rank', 'family'] ##키뷰를 리스트로 반환
- list(a.keys())[1:3] =>['phone', 'age'] ##리스트로 반환 후 슬라이싱가능
- a.keys() => TypeError: 'dict_keys' object is not subscriptable ## 키뷰는 슬라이싱불가
2) values 밸류값만 추출하여 반환
- a.values() =>dict_values(['Lee', '000-0000-0000', 19, 'Seoul', [1, 3, 4], ('엄마', '아빠')]) ## ValuesView반환
- list(a.values()) =>['Lee', '000-0000-0000', 19, 'Seoul', [1, 3, 4], ('엄마', '아빠')] ## ValuesView반환후 리스트로 변환
- list(a.values())[1:3] =>['000-0000-0000', 19] ##리스트로 반환 후 슬라이싱가능
- a.values() => TypeError: 'dict_values' object is not subscriptable ## valuesView는 슬라이싱불가
3) items 키-밸류쌍을 반환
- a.items() =>dict_items([('name', 'Lee'), ('phone', '000-0000-0000'), ('age', 19), ('city', 'Seoul'), ('rank', [1, 3, 4]), ('family', '엄마', '아빠'))]) ## set과 비슷한 itemsView를 반환
- list(a.items()) =>[('name', 'Lee'), ('phone', '000-0000-0000'), ('age', 19), ('city', 'Seoul'), ('rank', [1, 3, 4]), ('family', ('엄마', '아빠'))] ## itemsView를 튜플쌍이 들어있는 리스트 변환
- list(a.items())[1:3] =>[('phone', '000-0000-0000'), ('age', 19)] ##리스트로 반환 후 슬라이싱가능
- a.items() => TypeError: 'dict_items' object is not subscriptable ## valuesView는 슬라이싱불가
5. 키 존재여부확인
list(a.keys()) =>['name', 'phone', 'age', 'city', 'rank', 'family']
- 'name' in a => True
- 'name' not in a => False
- 'nickname' in a => False
- 'nickname' not in a => True
더보기
print("Dictionary 딕셔너리")
print("json과 비슷 ")
print("순서X | 중복X | 삽입O | 삭제X")
print("구성 key-value")
## 선언
print("\n1. 선언")
a = {'name' : 'Lee', 'phone' : '000-0000-0000', 'age' : 19}
b = {'name' : 'Park', 'phone' : '000-0000-0001', 'age' : 19, 'name' : 'Lee', 'favoriteNo': 19}
c = {0:'Korea', 1:'America', 2:'China'}
d = {'arr' : [1,2,3,4,'a']}
print("a = {'name' : 'Lee', 'phone' : '000-0000-0000', 'age' : 19} \n=> a : ",a)
print("## 키는 중복X(name덮어쓰기 Park->Lee) 값은 중복O(age값과 favorite값 모두 19)")
print("b = {'name' : 'Park', 'phone' : '000-0000-0001', 'age' : 19, 'name' : 'Lee', 'favoriteNo': 19}\n=> b :",b)
print("c = {0:'Korea', 1:'America', 2:'China'} \n=> c : ",c)
print("d = {'arr' : [1,2,3,4,'a']} \n=> d : ",d)
print("타입조회 : ", type(a))
## 조회
print("\n1. 조회")
print("a : ",a)
print("d : ",d)
print("\n1) 직접조회(키가 없을 시 에러)")
print('a["name"] => %s'%a["name"])
print("a['school'] => KeyError: 'school' \t ## 키가 존재하지 않을 때 에러")
print("d['arr'][1:-1] => %s \t ## 값이 배열일 때 슬라이싱가능 "% d['arr'][1:-1] )
print("\n2) get메서드로 조회")
print('a.get("name") => %s'%a.get("name"))
print('a.get("school") => %s\t ## 키가 존재하지 않으면 None반환'%a.get("school"))
## 딕셔너리 추가
print("\n2. 추가")
print("추가 전 a: ",a)
a['city'] = 'Seoul'
a['rank'] = [1,3,4]
a['family'] = ('엄마','아빠')
print("a['city'] = 'Seoul'")
print("a['rank'] = [1,3,4]")
print("a['family'] = ('엄마','아빠')")
print("추가 후 a: ",a)
## keys, values, items
print("\n3. keys, values, items 반복문이 편리 : 데이터 전후처리, 대량데이터가공에 편리")
print("\n1) keys 키만 추출하여 반환")
print("a.keys() =>%s ##set과 비슷한 keyView를 반환"%a.keys())
print("list(a.keys()) =>%s ##키뷰를 리스트로 반환"%list(a.keys()))
print("list(a.keys())[1:3] =>%s ##리스트로 반환 후 슬라이싱가능 \na.keys() => TypeError: 'dict_keys' object is not subscriptable ## 키뷰는 슬라이싱불가 "%list(a.keys())[1:3])
print("\n2) values 밸류값만 추출하여 반환")
print("a.values() =>%s ## ValuesView반환"%a.values())
print("list(a.values()) =>%s ## ValuesView반환후 리스트로 변환"%list(a.values()))
print("list(a.values())[1:3] =>%s ##리스트로 반환 후 슬라이싱가능 \na.values() => TypeError: 'dict_values' object is not subscriptable ## valuesView는 슬라이싱불가 "%list(a.values())[1:3])
print("\n2) items 키-밸류쌍을 반환")
print("a.items() =>%s ## set과 비슷한 itemsView를 반환"%a.items())
print("list(a.items()) =>%s ## itemsView를 튜플쌍이 들어있는 리스트 변환"%list(a.items()))
print("list(a.items())[1:3] =>%s ##리스트로 반환 후 슬라이싱가능 \na.items() => TypeError: 'dict_items' object is not subscriptable ## valuesView는 슬라이싱불가 "%list(a.items())[1:3])
## 키 존재여부확인
print("\n4. 키 존재여부확인")
print("list(a.keys()) =>%s "%list(a.keys()))
print("'name' in a => ",'name' in a)
print("'name' not in a => ",'name' not in a)
print("'nickname' in a => ",'nickname' in a)
print("'nickname' not in a => ",'nickname' not in a)
728x90
'프로그래밍 > 파이썬' 카테고리의 다른 글
[머신러닝] 단순선형회귀 분석 (0) | 2021.11.29 |
---|---|
[파이썬] 함수 (0) | 2021.06.16 |
[파이썬] Set 셋 (0) | 2021.06.15 |
[파이썬] 튜플 (Tuple) (0) | 2021.06.15 |
[파이썬] 리스트 List (0) | 2021.06.15 |