key와 value한 쌍으로 구성된 자료형으로 대응관계를 나타낼 수 있는 자료형이다.
인덱스 값을 통해 요솟값을 찾는 다른 자료형과 달리 key값을 통해 요소값을 찾을 수 있다.
{단어: 뜻, 단어2: 뜻2, 단어3 : 뜻3 ...} 의 형태로 표현한다
dic = { 'name' :"Kim", 'age' : 21, 'score' : [80, 65]}
print(dic)
>>{'name': 'Kim', 'age': 21, 'score': [80, 65]}
리스트 자료형이나 튜플 자료형도 value값으로 사용할 수 있다.
(key는 구조체처럼 변수명을 정하는 것이 아니라 검색할 key값을 붙이는 것임으로 따옴표 안에 쓴다)
위에서 언급했듯 딕셔너리 자료형은 key값을 검색해서 value를 찾는다
dic = { 'name': "Kim", 'age': 21, 'score': [80, 65]}
print(dic['name']
>>Kim
dic2 = {1: 'a', 2: 'b'}
print(dic2[1])
>>a
※ key가 아닌 인덱스 값으로 검색하면 KeyError오류가 발생한다
✔ 딕셔너리 요소 추가
딕셔너리에 요소를 추가하고 싶을 때는
딕셔너리명['key값'] = 'value값'으로 입력한다.
dic = { 'name': "Kim", 'age': 21}
dic['job'] ='student'
print(dic)
>>{'name': 'Kim', 'age': 21, 'job': 'student'}
✔ 딕셔너리 요소 삭제
del 명령어를 통해 딕셔너리의 key: value를 삭제할 수 있다
dic = { 'name': "Kim", 'age': 21, 'score': 75}
del dic['score']
print(dic)
>>{'name': 'Kim', 'age': 21}
✔ key, value, item
keys : 딕셔너리 안의 key값들만 보여주는 메소드
values : 딕셔너리 안의 value값들을 모아서 보여주는 메소드
items : 딕셔너리의 key, value쌍 전체를 확인하는 메소드
dic = { 'name': "Kim", 'age': 21, 'job': 'student', 'score' : 90}
print(dic.keys())
print(dic.values())
print(dic.items())
>>dict_keys(['name', 'age', 'job', 'score'])
dict_values(['Kim', 21, 'student', 90])
dict_items([('name', 'Kim'), ('age', 21), ('job','student'), ('score', 90)])
중복을 제거하고 순서가 없는 자료형
set함수를 사용해서 생성한다.
set1 = set([1,2,3])
print(set1)
>> {1, 2, 3}
set2 = set([1,3,2,4,4,3,2,5])
print(set2)
>>{1, 2, 3, 4, 5}
set3 = set("hello")
print(set3)
>>{'e', 'o', 'h', 'l'}
순서가 없는 자료형이기 때문에 인덱스 번호로 요소값을 얻을 수 없다.
인덱스 검색을 하고 싶다면 리스트형으로 변환 후 사용 가능
반대로 리스트도 집합 자료형으로 바꿔 사용할 수 있다.
list1 = [1,2,3,4,5,3]
set1 = {1,2,3,4,5}
ltos = set(list1)
stol = list(set1)
print(listoset)
print(setolist)
>>{1, 2, 3, 4, 5}
[1, 2, 3, 4, 5]
✔ 집합자료형 집합연산
집합자료형의 특성을 가지고 합집합, 차집합, 교집합을 수행할 수 있다.
- 교집합 (&)
set1 = {1,3,5,6,7}
set2 = {2,3,4,5,7}
print(set1&set2)
>>{3, 5, 7}
- 합집합 (|)
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1|set2)
>>{1, 2, 3, 4, 5, 6}
- 차집합(-)
set1 = {1,2,3,4}
set2 = {3,4,5,6}
print(set1-set2)
print(set2-set1)
>> {1,2}
{5,6}
※ add : set에 값 추가
update : set에 여러 값 추가
remove : set에서 값 삭제