리스트와 튜플은 값 여러 개를 일렬로 저장할 뿐 값끼리 연관 관계가 없었다. 파이썬에서는 연관된 값을 묶어서 저장하는 용도로 딕셔너리라는 자료형을 제공한다.
딕셔너리는 리스트나 튜플처럼 순차적으로(sequential) 해당 요솟값을 구하지 않고 Key를 통해 Value를 얻는다. 즉, 사전(dictionary)에서 단어를 찾듯이 값을 가져올 수 있다고 하여 딕셔너리라고 부른다.
딕셔너리는 { }(중괄호) 안에 키: 값 형식으로 저장하며 각 키와 값은 ,(콤마)로 구분해준다.
딕셔너리 = {키1: 값1, 키2: 값2}
dic = {'name':'pey', 'phone':'0119993323', 'birth': '1118'}
비어 있는 딕셔너리는 a = dict()로 생성할 수도 있다.
dict는 다음과 같이 키와 값을 연결하거나, 리스트, 튜플, 딕셔너리로 딕셔너리를 만들 때 사용한다.
1) 딕셔너리 = dict(키1=값1, 키2=값2)
키=값 형식으로 딕셔너리를 만들 수 있다. 이때는 키에 ' '(작은따옴표)나 " "(큰따옴표)를 사용하지 않아야 한다.
x = dict(a=900, f=60)
2) 딕셔너리 = dict(zip([키1, 키2], [값1, 값2]))
딕셔너리 = dict(zip((키1, 키2), (값1, 값2)))
키가 들어있는 리스트와 값이 들어있는 리스트를 차례대로 zip에 넣은 뒤 다시 dict에 넣어준다. 튜플에 저장해도 된다.
x = dict(zip[a, f], [900, 60])
3) 딕셔너리 = dict([(키1, 값1), (키2, 값2)])
리스트 안에 (키, 값) 형식의 튜플을 나열한다.
4) 딕셔너리 = dict({키1: 값1, 키2: 값2})
dict 안에서 중괄호로 딕셔너리를 생성한다.
1) dict.fromkeys(키리스트)
키리스트로 딕셔너리를 생성하며 값은 모두 None으로 저장한다. 튜플도 된다.
keys = ['a', 'b', 'c', 'd']
x = dict.fromkeys(keys)
x # {'a': None, 'b': None, 'c': None, 'd': None}
2) dict.fromkeys(키리스트, 값)
키 리스트와 값을 지정하면 해당 값이 키의 값으로 저장된다.
y = dict.fromkeys(keys, 100)
y # {'a': 100, 'b': 100, 'c': 100, 'd': 100}
딕셔너리[키]
: 딕셔너리 키를 사용하여 값 얻기키 in 딕셔너리
: 딕셔너리에 키가 있는지 확인하기, True 또는 False를 결괏값으로 반환딕셔너리[키] = 값
: 딕셔너리 키에 값 추가하기, 해당 키와 값이 있을 경우 값이 변경되고, 해당 키가 없으면 키가 추가되고 값이 할당del 딕셔너리[키]
: 딕셔너리 요소 삭제하기len(딕셔너리)
: 딕셔너리 키 개수 구하기(키와 값은 1:1 관계이므로 키의 개수는 곧 값의 개수)딕셔너리.keys()
: 키 리스트 가져오기, 딕셔너리의 Key만을 모아서 dict_keys 객체를 돌려줌(참고사이트)딕셔너리.values()
: 값 리스트 가져오기딕셔너리.items()
: 키, 값 쌍 모두 가져오기딕셔너리.get(키)
: 키를 사용하여 값 얻기딕셔너리.get(키, 기본값)
: 딕셔너리 안에 찾으려는 Key 값이 없을 경우 디폴트 값을 대신 가져옴
딕셔너리[키]
와딕셔너리.get(키)
의 차이
존재하지 않는 키로 값을 가져오려고 할 경우 딕셔너리[키]는 Key 오류를 발생시킨다. 반면, 딕셔너리.get(키)는 None을 돌려준다는 차이가 있다.
딕셔너리.setdefault(키, default=None)
: 딕셔너리에 키-값 쌍을 추가. 단, setdefault에 기본값 없이 키만 지정하면 값에 None을 저장딕셔너리.update(키1 = 값1, 키2 = 값2)
: 키의 값 수정하기, 키가 문자열일 때만 사용, 키가 없으면 키와 값을 추가딕셔너리.update({키1: 값1, 키2: 값2})
: 키의 값 수정하기,키가 숫자일 경우딕셔너리.update([[키1, 값1], [키2, 값2]])
: 리스트를 이용해 키의 값 수정하기딕셔너리.update(((키1, 값1), (키2, 값2)))
: 튜플을 이용해 키의 값 수정하기딕셔너리.update(zip([키1, 키2], [값1, 값2]))
: 키 리스트와 값 리스트를 묶은 zip 객체로 값을 수정setdefault와 update의 차이
setdefault는 키-값 쌍 추가만 할 수 있고, 이미 들어있는 키의 값은 수정할 수 없다. 하지만 update는 키-값 쌍 추가와 값 수정이 모두 가능하다.
딕셔너리.clear()
: 모든 키, 값 지우기딕셔너리.pop(키)
: 특정 키-값 쌍을 삭제한 뒤 삭제한 값을 반환딕셔너리.pop(키, 기본값)
: 기본값을 지정하면 해당 키가 없을 때 기본값만 반환딕셔너리.popitem()
: 마지막 키-값 쌍을 삭제(파이썬 3.6 이상), 임의의 키-값 쌍을 삭제(파이썬 3.5 이하)세트(set)는 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다. 세트는 합집합, 교집합, 차집합 등의 연산이 가능하다.
1) 세트는 중복을 허용하지 않는다
2) 세트는 순서가 없다.(Unordered)
3) 세트는 리스트, 딕셔너리와 달리 세트 안에 세트를 넣을 수 없다.
세트는 { }(중괄호) 안에 값을 저장하며 각 값은 ,(콤마)로 구분해준다. 또한 set 키워드를 사용해서도 만들 수 있다. (빈 집합은 c = set()로 만든다)
파이썬은 내용을 변경할 수 없는 세트도 제공한다. 집합 연산과 메서드에서 요소를 추가하거나 삭제하는 연산, 메서드는 사용할 수 없다.
그렇다면 frozenset는 왜 사용할까? frozenset는 세트 안에 세트를 넣고 싶을 때 사용한다.
두 집합 중 겹치지 않는 요소만 포함
값 in 세트
: 집합에 특정 값이 있는지 확인하기, True 또는 False로 반환값 not in 세트
: 집합에 특정 값이 없는지 확인하기len(set)
: 집합의 요소 개수 구하기set.add(요소)
: 집합에 요소 추가하기set.remove(요소)
: 집합에서 특정 요소를 삭제하고 요소가 없으면 에러를 발생시킨다.set.discard(요소)
: 집합에서 특정 요소를 삭제하고 요소가 없으면 그냥 넘어간다.set.pop()
: 집합에서 임의의 요소 삭제하기set.clear()
: 집합의 모든 요소 삭제하기Dictionary는 키와 값으로 구성
Set는 키값만 존재
본 포스팅은 아래의 사이트를 참고하여 작성되었습니다.
점프투파이썬 https://wikidocs.net/book/1
코딩도장 https://dojang.io/