딕셔너리(dictionary)의 구조
- 중괄호({ })로 감싸진 키(key)와 요소(value)의 1대1 매칭으로 구성됨
- 콜론을 기준으로 앞이 key, 뒤가 value값
- 아래의 dict의 key값 : 이름, 나이, 다루는 언어
-
dict = {"이름" : "홍길동", "나이" : 28, "다루는 언어" : ["Python", "Java"]}
- 각 key와 value 쌍은 쉼표(,)로 구분한다
- key의 값이 겹칠경우 하나 외에는 모두 무시되므로 key는 중복X
- 하나의 key에 여러 값을 매칭하고 싶을 경우 value를 리스트형태로 지정할 수 있다.
- key값은 변하지 않는 값으로만 지정이 가능하다!!
- ex) 튜플형태는 가능하나 리스트는 불가능하다.
딕셔너리(dictionary) 검색
- key값 조회 ( dict.keys() )
-
d = {"이름" : "홍길동", "나이" : 28, "다루는 언어" : ["Python", "Java"]} d.keys() # dict_keys(["이름", "나이", "다루는 언어"])
-
- key값으로 value 조회 ( dict.values(), dict.get(key값, default값) )
- dict.get(key, default) : 입력한 key값을 검색한 후 key값이 없다면 default값을 반환한다.
-
d = {"이름" : "홍길동", "나이" : 28, "다루는 언어" : ["Python", "Java"]} d["이름"] # "홍길동" d["다루는 언어"] # ["Python", "Java"] d.values() # dict_values(['홍길동', 28, ['Python', 'Java']]) d.get("이름") # "홍길동" : d["이름"]과 같은 결과!
- key와 value값 동시에 조회( dict.items() )
-
d = {"이름" : "홍길동", "나이" : 28, "다루는 언어" : ["Python", "Java"]} d.items() # dict_items([('이름', '홍길동'), ('나이', 28), ('다루는 언어', ['Python', 'Java'])])
-
- value값으로 key값 찾기
- key와 value값 뒤집기
- 만약 value값 중에 리스트가 있다면 TypeError가 일어나므로 주의!!
-
dic = {1:"하나", 2:"둘", 3:"셋"} dic.keys() # dict_keys([1, 2, 3]) reverse_dic = dict(map(reversed, dic.items())) print(reverse_dic) # {"하나":1, "둘":2, "셋":3} dic.keys() # dict_keys(["하나", "둘", "셋"])
- for문으로 찾기
-
dic = {1:"하나", 2:"둘", 3:"셋"} for key, value in dic.items(): if value=="셋": print(key) # 3
-
- key와 value값 뒤집기
딕셔너리(dictionary) 원소 추가
- dict[key] = value 형태로 추가 가능
-
dic = {} dic["name"] = "kim" print(dic) # {'name': 'kim'} dic["age"] = 28 print(dic) # {'name': 'kim', "age":28} dic["hobby"] = [] print(dic) # {'name': 'kim', "age":28, "hobby":[]} dic["hobby"].append("yoga") print(dic) # {'name': 'kim', "age":28, "hobby":["yoga"]}
- dict1.update(dict2) : dict1을 기준으로 dict2를 추가한다.
-
dic1 = {"key1" : 1, "key2" : 2, "key3" : 3} dic2 = {"key3" : 30, "key4" : 40, "key5" : 50} dic1.update(dic2) # 중복된 키가 있다면 왼쪽에 적은 dict기준으로 value값 결정 print(dic1) # {"key1" : 1, "key2" : 2, "key3" : 3, "key4" : 40, "key5" : 50}
딕셔너리(dictionary) 원소 삭제 - del, pop, claer
- del dict[key] : 지정한 key와 key와 매칭되는 value를 같이 삭제
- 지정한 key가 존재하지 않을 경우 KeyError가 난다
-
dic = {'name': 'kim', "age":28, "hobby":["yoga"]} del dic["age"] print(dic) # {'name': 'kim', "hobby":["yoga"]}
- dict.pop(key, default) : 지정한 key와 key와 매칭되는 value를 같이 삭제 단 key가 존재하지 않을 경우 default값 반환
- default값을 지정하지 않을 경우 del과 같은 KeyError를 반환한다.
-
dic = {'name': 'kim', "age":28, "hobby":["yoga"]} dic.pop("age", 404) print(dic) # {'name': 'kim', "hobby":["yoga"]} dic.pop("age", 404) # 404
- 여러 요소를 삭제해야하는 경우 : for문 이용
-
dic = {'name': 'kim', "age":28, "hobby":["yoga"]} deleted = [dic.pop(key) for key in ["name", "age"]] print(deleted) # ["kim", 28] print(dic) #{"hobby":["yoga"]}
-
- del이 성능상 삭제한 값을 반환하는 pop보다 2배정도 빠르지만 key가 존재하지 않을 경우 에러를 발생시키기 때문에 del은 key값을 확실히 알고있을때 사용할 것!
- dict.clear() : 모든 요소 삭제하기
-
dic = {'name': 'kim', "age":28, "hobby":["yoga"]} dic.clear() print(dic) # {}
-
'Python > 알고리즘 기초' 카테고리의 다른 글
시간복잡도와 공간복잡도 (1) | 2024.01.14 |
---|---|
파이썬(Python) - 이분탐색(이진탐색) / bisect (0) | 2022.04.12 |
파이썬(Python) - 문자열에서 여러 문자 바꾸기 (0) | 2022.03.31 |
댓글