-
[파이썬] 4. 컬렉션 타입의 이해 - 파이썬 dictionary 와 set파이썬 Python 2019. 11. 18. 22:52
# dictionary
- 키와 값을 갖는 데이터 구조
- 키는 내부적으로 hash (:) 값으로 저장
- 순서를 따지지 않음 -> 인덱스가 없음
a = [1, 2, 3, 4] b = {'Korea': 'Seoul', 'Canada': 'Ottawa', 'USA': 'Washington D.C'} c = {0:1, 1:6, 7:9, 8:10} print(a[2]) #3 print(b[2]) #error print(b['Korea']) #Seoul #Korea 키에 해당하는 value를 출력 print(c[7]) #9 #7은 인덱스가 아니라 키(key), 7에 해당하는 value가 출력됨
항목의 추가 및 변경
- 기존에 키가 존재하면, 새로운 값으로 업데이트 (overwritting)
- 존재하지 않으면 새로운 키와 값이 생성되어 추가됨
a = {'Korea': 'Seoul', 'Canada': 'Ottawa', 'USA': 'Washington D.C'} #a에 키와 값 추가 a['Japan'] = 'Tokyo' a['Japan'] = 'Kyoto' a['Japan2'] = 'Kyoto' a['China'] = 'Beijing' print(a) #동일한 키가 중복으로 있을 수 없음. Japan에는 Kyoto로 입력됨. #value는 중복이 여러번 가능. #{'Korea': 'Seoul', 'Canada': 'Ottawa', 'USA': 'Washington D.C','Japan': 'Kyoto', 'Japan2': 'Kyoto', 'China': 'Beijing'}
- update() : 두 딕셔너리를 병합함. 키가 겹친다면 parameter로 전달되는 키값이 overwrite됨.
a = {'a':1, 'b':2, 'c': 3} b = {'a':2, 'd':4, 'e':5} a.update(b) print(a) #똑같은 a가 있을 때 업데이트 된 값으로 overwriting 됨 #{'a': 2, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
- key 삭제: del 키워드와 pop()함수 이용
a = {'a': 1, 'b': 2, 'c' : 3} a.pop('b') del a['c'] print(a) #{'a': 1}
- clear(): 딕셔너리의 모든 값을 초기화
a = {'a': 1, 'b': 2, 'c' : 3} a.clear() print(a) #{}
- in : key값의 존재 확인
a = {'a': 1, 'b': 2, 'c' : 3} b = [1, 2, 3, 4, 5, 6, 7, 9, 10, 100] print(100 in b) #True print(2 in a) #False print('b' in a) #True
- value 접근
- dict[key]로 접근, 키가 없는 경우 에러발생
- .get() 함수로 접근, 키가 없는 경우 None 반환
a = {'a': 1, 'b': 2, 'c' : 3} b = [1, 2, 3, 4, 5, 6, 7, 9, 10, 100] print(a.get('d')) #None print(a['d']) #error #만약 a(['d'])로 값을 확인하고 싶으면 다음과 같이 if문 사용 if 'd' in a: print(a['d'])
- 모든 keys와 values 접근
- keys() : 키만 반환
- values() : 값만 반환
- items() : 키와 값의 튜플을 반환
a = {'a': 1, 'b': 2, 'c' : 3} print(a) #{'a': 1, 'b': 2, 'c': 3} print(list(a.keys())) #['a', 'b', 'c'] print(list(a.values())) #[1, 2, 3] print(list(a.items())) #[('a', 1), ('b', 2), ('c', 3)]
#set
- dictionary에서 key만 활용하는 데이터 구조로 이해.
- 수학에서 집합과 동일한 개념
a = {1, 1, 2, 3, 3, 4, 1, 5} print(a) #{1, 2, 3, 4, 5} #set()을 이용해 리스트를 집합으로 변환 b = [1, 1, 2, 3, 3, 4, 1, 5] print(b) #[1, 1, 2, 3, 3, 4, 1, 5] c = set(b) print(c) #{1, 2, 3, 4, 5}
- set operations : 수학의 집합 연산과 동일 (교집합, 합집합, 차집합 등)
a = {1, 2, 3} b = {2, 3, 4} print(a.union(b)) # 합집합 {1, 2, 3, 4} print(a.intersection(b)) # 교집합 {2, 3} print(a.difference(b)) # 차집합 {1} print(a.issubset(b)) #부분 집합 False
반응형'파이썬 Python' 카테고리의 다른 글
[파이썬] 6. 반복문 while / for 의 이해 (feat. break와 continue) (1) 2019.11.25 [파이썬] 5. 조건문 if / elif/ else (0) 2019.11.25 [파이썬] 3. 컬렉션 타입의 이해 - 리스트(list)와 튜플 (tuple) (0) 2019.11.18 [파이썬] 2. 문자열 사용방법 (feat. 이스케이프 문자 / index / slicing / 문자열 함수) (0) 2019.11.16 [파이썬] 1. Python 에서 변수와 데이터 타입 (0) 2019.11.09