🔥알림🔥
① 테디노트 유튜브 -
구경하러 가기!
② LangChain 한국어 튜토리얼
바로가기 👀
③ 랭체인 노트 무료 전자책(wikidocs)
바로가기 🙌
④ RAG 비법노트 LangChain 강의오픈
바로가기 🙌
⑤ 서울대 PyTorch 딥러닝 강의
바로가기 🙌
#03-파이썬(Python) 세트(set)와 딕셔너리(dictionary)
본 포스팅은 파이썬(Python) 코딩 입문자를 위한 튜토리얼 시리즈 연재 중 일부입니다. 이번 튜토리얼에서는 파이썬 세트(set)와 딕셔너리(dictionary)를 다룹니다.
코드
시퀀스, 집합형 자료구조
분류 | 타입 | 특징 | 예시 |
---|---|---|---|
시퀀스(sequence) | 리스트(list) | 순서가 있고, 가변(mutable) | [1, 2, 3] |
시퀀스(sequence) | 튜플(tuple) | 순서가 있고, 불변(immutable) | (1, 2, 3) |
세트(set) | 세트(set) | 순서가 없고, 중복을 허용하지 않음 | {1, 2, 3} |
맵(map) | 딕셔너리(dictionary) | 순서가 없고, key/value 쌍으로 이루어짐 | {'a': 1, 'b': 2, 'c': 3} |
세트(set)
- 세트는 순서가 보장 되지 않습니다.
- 세트는 요소의 중복을 허용하지 않습니다.
- 세트는 {}를 활용하여 생성할 수 있습니다.
생성
myset = set()
myset
set()
myset = set([1, 1, 1, 2, 2, 2, 3, 3, 3])
myset
{1, 2, 3}
myset = set((1, 1, 1, 2, 3, 3, 4, 5, 5, 5))
myset
{1, 2, 3, 4, 5}
myset = {1, 1, 1, 2, 2, 2, 3, 3, 3}
myset
{1, 2, 3}
add() : 값 추가
- set에 요소를 추가합니다.
빈 set를 생성합니다.
myset = set()
add() 로 요소를 추가합니다.
myset.add(1)
myset.add(2)
myset.add(3)
myset.add(1)
myset.add(2)
myset.add(3)
myset.add(1)
myset.add(2)
myset.add(3)
요소를 중복하여 추가하였지만, 중복을 허용하지 않는 set의 특성상 {1, 2, 3} 으로 중복이 제거된 요소만 출력됩니다.
myset
{1, 2, 3}
update() : 여러개 값 추가
- 여러개의 값을 한꺼번에 추가하고자 할 때는 update() 메서드를 사용합니다.
myset = {1, 2, 3}
list의 요소들을 한꺼번에 update
myset.update([4, 5, 6])
myset
{1, 2, 3, 4, 5, 6}
tuple의 요소들을 한꺼번에 update
myset.update((7, 8, 9))
myset
{1, 2, 3, 4, 5, 6, 7, 8, 9}
set의 요소들을 한꺼번에 update
myset.update({10, 11, 12})
myset
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}
remove() : 값 제거
- 단일 요소를 제거합니다.
myset = {1, 2, 3, 4, 5}
myset.remove(2)
myset
{1, 3, 4, 5}
교집합 (intersection)
- 교집합은 집합 A와 B가 주어졌을 때 공통된 요소를 말합니다.
&
기호나intersection()
메서드를 활용하여 교집합을 구할 수 있습니다.
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
a & b
{3, 4, 5}
a.intersection(b)
{3, 4, 5}
합집합 (union)
- 합집합은 집합 A와 B가 주어졌을 때 집합 A, B 요소 모두를 포함하는 것을 말합니다.
|
기호나union()
메서드를 활용하여 합집합을 구할 수 있습니다.
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
a | b
{1, 2, 3, 4, 5, 6, 7}
a.union(b)
{1, 2, 3, 4, 5, 6, 7}
차집합 (difference)
- 두 집합에서, 하나의 집합에 포함되고 다른 집합에는 포함되지 않는 모든 원소의 집합.
-
연산자를 활용하거나difference()
메서드를 활용하여 구할 수 있습니다.
a = {1, 2, 3, 4, 5}
b = {3, 4, 5, 6, 7}
a 집합에서 b 집합을 뺀 차집합
a - b
{1, 2}
a.difference(b)
{1, 2}
b 집합에서 a 집합을 뺀 차집합
b - a
{6, 7}
b.difference(a)
{6, 7}
집합의 타입 변환
set를 list로 변환
a = {1, 2, 3, 4, 5}
type(a)
set
b = list(a)
b
[1, 2, 3, 4, 5]
type(b)
list
list를 set로 변환
- 중복을 제거할 때 많이 활용합니다.
a = [1, 1, 1, 2, 2, 2, 3, 3, 3]
a
[1, 1, 1, 2, 2, 2, 3, 3, 3]
type(a)
list
b = set(a)
b
{1, 2, 3}
type(b)
set
b를 다시 list 자료형으로 변환
b = list(b)
b
[1, 2, 3]
딕셔너리(dictionary)
- 순서를 가지지 않습니다.
- 키(key)와 값(value)의 쌍으로 이루어져 있습니다.
- type은
dict
로 표시 됩니다. - key를 사용하여 값을 조회할 수 있습니다.
- 딕셔너리는 수정, 삭제, 추가가 가능합니다.
생성
mydict = dict()
print(type(mydict))
mydict
<class 'dict'>
{}
mydict = {'a': 1, 'b': 2, 'c': 3}
print(type(mydict))
mydict
<class 'dict'>
{'a': 1, 'b': 2, 'c': 3}
딕셔너리는 여러 타입의 key를 가질 수 있습니다.
mydict = {'a': 1, '가':2, 100: 3, 3.14: 4, True: 5}
mydict
{'a': 1, '가': 2, 100: 3, 3.14: 4, True: 5}
값 조회
- key 값으로 값을 조회할 수 있습니다.
mydict = {'a': 1, '가':2, 100: 3, 3.14: 4, True: 5}
mydict
{'a': 1, '가': 2, 100: 3, 3.14: 4, True: 5}
key를 지정하여 값을 조회할 수 있습니다.
mydict['a']
1
key가 없는 경우 Error가 발생합니다.
mydict['b']
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-50-a8dfdc4bddd9> in <module> ----> 1 mydict['b'] KeyError: 'b'
get()
메서드를 활용하여 값을 조회할 수 있습니다.
mydict.get('a')
1
get()
을 사용하면 key가 없는 경우라도 Error가 발생하지 않습니다. 단지 None이 반환됩니다.
mydict.get('b')
keys() : 모든 key 조회
mydict = {'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict
{'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict.keys()
dict_keys(['a', 'b', 'c', 'd', 'e'])
[참고] dict_keys
dict_keys
는 리스트(list)가 아닙니다.- 객체(object)로 생성되는데, 이를 list로 변경하기 위해서는 list()로 타입 변환을 하면 됩니다.
list(mydict.keys())
['a', 'b', 'c', 'd', 'e']
values() : 모든 value 조회
mydict.values()
dict_values([100, 200, 300, 400, 500])
items() : 모든 key, value 조회
- key, value가 튜플로 묶여서 조회됩니다.
mydict.items()
dict_items([('a', 100), ('b', 200), ('c', 300), ('d', 400), ('e', 500)])
list(mydict.items())
[('a', 100), ('b', 200), ('c', 300), ('d', 400), ('e', 500)]
key 값의 존재 유무 확인
'a' in mydict
True
'f' in mydict
False
값을 추가하기
- 새로운 key에 값을 대입하여 추가
mydict = dict()
mydict
{}
mydict['apple'] = 123
mydict['apple']
123
mydict[0] = 2
mydict[0]
2
update() : 다중 업데이트
- 값을 한꺼번에 업데이트 합니다.
mydict = {'파인애플': 1500, '망고': 3500, '배': 1000}
mydict
{'파인애플': 1500, '망고': 3500, '배': 1000}
fruit = {
'사과': 2000,
'딸기': 3000,
'수박': 5000,
}
mydict.update(fruit)
mydict
{'파인애플': 1500, '망고': 3500, '배': 1000, '사과': 2000, '딸기': 3000, '수박': 5000}
값 변경
- key 값에 새로운 값(value)를 대입하여 값을 변경할 수 있습니다.
mydict = {'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict
{'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict['a'] = 900
mydict
{'a': 900, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
제거하기 / key 제거
mydict = {'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict
{'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
del
값을 제거할 수 있습니다.
del
에 딕셔너리 key를 지정합니다.
del mydict['a']
mydict
{'b': 200, 'c': 300, 'd': 400, 'e': 500}
pop()
에 key를 지정하여 값을 제거할 수 있습니다.
제거되는 값의 value를 반환합니다.
mydict.pop('b')
200
mydict
{'c': 300, 'd': 400, 'e': 500}
len() : 요소의 개수 파악
len(mydict)
3
clear() - 전부 삭제
mydict = {'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict
{'a': 100, 'b': 200, 'c': 300, 'd': 400, 'e': 500}
mydict.clear()
mydict
{}
댓글남기기