파이썬에 있는 컬렉션 자료타입으로는 리스트와 튜플, 딕셔너리와 세트가 있는데요. 여기서는 딕셔너리와 세트를 확인해 보겠습니다.
목차
1. 딕셔너리 (Dictionary)
한 쌍의 Key와 Value로 이루어진 자료형입니다. 리스트는 인덱스를 사용하여 요소를 가져오지만 딕셔너리는 인덱스가 없고 키(key)를 사용하여 값(value)을 가져옵니다.
딕셔너리 예제
딕셔너리는 인덱스를 사용하지 않기 때문에 다음의 예시 코드와 같이 키(key)인 ‘이름’를 사용하여 값(value)인 "하늘"을 가져옵니다.
info = {"이름": "하늘", "취미": "수영", "좋아하는 숫자": 1}
print(info["이름"]) # 하늘
요소 삭제
del을 사용하여 딕셔너리에서 특정 키와 그에 대응하는 값을 삭제할 수 있습니다.
del info["이름"]
print(info) # {'취미': '수영', '좋아하는 숫자': 1}
위의 코드에서 del info["이름"]은 딕셔너리 info에서 '이름' 키(key)와 그 값(value)을 삭제합니다. 삭제 후 info를 출력하면 {'취미': '수영', '좋아하는 숫자': 1}만 남습니다.
값 수정, 추가
딕셔너리에 새로운 키-값 쌍을 추가하거나 기존 값을 수정할 수 있습니다. key를 사용하여 대입연산자 오른쪽에 수정 또는 추가할 값을 할당합니다. 딕셔너리의 키(key)는 중복값이나 여러 개의 값이 올 수 없지만, 딕셔너리의 밸류(value)는 여러 개의 값이 있는 리스트를 포함하여 어떠한 값도 가능합니다.
아래의 예시코드에서 info["이름"] = "수현"은 새로운 키-값 쌍 '이름': '수현'을 딕셔너리에 추가합니다. info["좋아하는 숫자"] = 3는 기존 '좋아하는 숫자' 키의 값을 1에서 3으로 수정합니다.
info = {'취미': '수영', '좋아하는 숫자': 1}
info["이름"] = "수현"
info["좋아하는 숫자"] = 3
print(info) #{'취미': '수영', '좋아하는 숫자': 3, '이름': '수현'}
리스트는 인덱스를 사용하여 요소를 가져오지만 딕셔너리는 키(key)와 값(value)의 쌍으로 이루어진 자료형이기 때문에 인덱스가 없고 키를 사용하여 값을 가져옵니다.
주요 함수들
keys() 함수
딕셔너리의 모든 키(key)를 반환합니다.
info = {'취미': '수영', '좋아하는 숫자': 3, '이름': '수현'}
infoKeys = info.keys()
print(infoKeys) # dict_keys(['취미', '좋아하는 숫자', '이름'])
위의 코드에서 info.keys()
는 딕셔너리 info
의 모든 키를 반환하며, 출력 결과는 dict_keys(['취미', '좋아하는 숫자', '이름'])
입니다.
values() 함수
딕셔너리의 모든 값(value)을 반환합니다.
info = {'취미': '수영', '좋아하는 숫자': 3, '이름': '수현'}
infoValues = info.values()
print(infoValues) # dict_values(['수영', 3, '수현'])
위에서 info.values()
는 딕셔너리 info
의 모든 값(value)을 반환하며, 출력 결과는 dict_values(['수영', 3, '수현'])
입니다.
items() 함수
딕셔너리의 모든 키-값 쌍을 튜플 형태로 반환합니다. 아래의 예시 코드에서 info.items()는 info의 모든 키-값 쌍을 튜플 형태로 리턴하여 출력 결과는 dict_items([('이름', '하늘'), ('취미', '수영')])입니다.
info = {"이름": "하늘", "취미": "수영"}
info.items() # dict_items([('이름', '하늘'), ('취미', '수영')])
clear() 함수
딕셔너리의 모든 요소를 삭제합니다.
info2 = {"이름": 'Jason', '전화번호': '010-3135-1256'}
info2.clear()
print(info2) # {}
위의 코드에서 info2.clear()
는 딕셔너리 info2
의 모든 요소를 삭제하며, 출력 결과는 빈 딕셔너리 {}
입니다.
get() 함수
변수.get(key)의 형식으로 사용하며 키(key)에 대응하는 값을 반환합니다. 키(key)가 존재하지 않으면 None
을 반환합니다.
info = {'취미': '수영', '좋아하는 숫자': 3, '이름': '찬혁'}
hobby = info.get("취미")
print(hobby) # 수영
위의 코드에서 info.get("취미")
는 '취미' 키에 대응하는 값을 반환하고, "수영"이 출력됩니다.
in 연산자
키가 딕셔너리에 존재하는지 확인하는 경우에 사용합니다.
print("age" in info) # False
위의 코드에서 "age" in info
는 'age' 키가 딕셔너리 info
에 존재하는지 확인하고, 출력 결과는 'age'키가 없기 때문에 False
입니다.
자료형 변환
딕셔너리를 리스트로 변경
dic = {'apple': 1000, 'orange': 1500, 'banana': 500}
lst = list(dic.keys())
print(lst) # ['apple', 'orange', 'banana']
위의 코드에서 list(dic.keys())
는 딕셔너리 dic
의 모든 키를 리스트로 변환하며, 출력 결과는 ['apple', 'orange', 'banana']
입니다.
딕셔너리를 튜플로 변경
리스트를 튜플로 변경하기 위해 tuple(리스트 이름)의 형식으로 사용하고 이를 변수에 저장하여 새로운 튜플을 만들 수 있습니다.
tpl = tuple(lst)
print(tpl) # ('apple', 'orange', 'banana')
위의 코드에서 tuple(lst)
는 리스트 lst
를 튜플로 변환하고 출력해 보면, ('apple', 'orange', 'banana')
를 확인할 수 있습니다.
2. 세트 (Set)
세트는 중복을 허용하지 않는 자료형으로, set([요소 1, 요소 2,.....]) 형식으로 정의하며, 순서가 없습니다.
리스트나 튜플은 순서가 있지만 세트는 인덱스를 사용하지 않기 때문에 순서가 없습니다. 출력할 때마다 순서가 바뀔 수 있습니다. 아래의 예를 보면 set([1, 2, 3, 10, 20, 30, 100, 200, 300])로 주어진 리스트를 세트로 변환한 후에 출력하면 순서가 바뀐 것을 확인할 수 있습니다.
set1 = set([1, 2, 3, 10, 20, 30, 100, 200, 300])
print(set1) # {1, 2, 3, 100, 200, 10, 300, 20, 30}
또한, 세트를 사용하여 리스트의 중복된 값을 제거할 수 있습니다. 리스트를 세트로 변환하고 출력하면 아래와 같이 중복된 값이 제거된 것을 볼 수 있습니다.
listNumbers = [1, 1, 2, 2, 3, 4, 5, 60, 70, 80, 90, 100]
setNumbers = set(listNumbers)
print(setNumbers) # {1, 2, 3, 4, 5, 70, 100, 80, 90, 60}
교집합
세트(set) 자료형에서는 '&' 또는 intersection() 함수를 사용하여 교집합을 구할 수 있습니다. 다음의 예에서 set자료형 a와 b의 교집합을 구하기 위해 & 와 intersection()을 사용하였습니다.
a = set([1, 2, 3, 4, 5])
b = set([3, 4, 5, 6, 7])
print(a & b) # {3, 4, 5}
print(a.intersection(b)) # {3, 4, 5}
위의 코드에서 a & b
와 a.intersection(b)
를 사용하여 두 세트 a
와 b
의 공통 요소를 가져옵니다. 출력 결과는 두 세트의 교집합인 {3, 4, 5}
입니다.
합집합
세트(set)에서는 '|' 또는 union()을 사용하여 합집합을 구할 수 있습니다.
set1 = set([1, 2, 3, 4, 5])
set2 = set([4, 5, 6])
print(set1 | set2) # {1, 2, 3, 4, 5, 6}
print(set1.union(set2)) # {1, 2, 3, 4, 5, 6}
위의 코드에서 set1 | set2
와 set1.union(set2)
는 두 세트 set1
과 set2
의 모든 요소를 합하여 {1, 2, 3, 4, 5, 6}
를 반환합니다.
차집합
세트(set)에서는 '-' 또는 difference()를 써서 한 세트에서 다른 세트의 요소를 빼는 차집합을 구할 수 있습니다.
set1 = set([1, 2, 3, 4, 5])
set2 = set([4, 5, 6])
print(set1 - set2) # {1, 2, 3}
print(set1.difference(set2)) # {1, 2, 3}
위의 코드에서 set1 - set2
와 set1.difference(set2)
는 세트 set1
에서 set2
의 요소를 뺀 결과를 {1, 2, 3}
을 반환합니다.
값 추가
세트에 add()를 사용하여 값을 추가할 수 있습니다. add()는 하나의 값만을 추가합니다.
setNumber = set([4, 5, 6])
setNumber.add(7)
print(setNumber) # {4, 5, 6, 7}
위의 코드에서 setNumber.add(7)
는 세트 setNumber
에 값을 추가합니다. 출력 결과는 {4, 5, 6, 7}
입니다.
여러 값 추가
하나의 값만을 추가하는 add()와는 다르게 update()는 여러 개의 값을 추가할 수 있습니다. 변수.update([...]) 형식으로 () 안에 대괄호를 쓰고 여러 값을 쉼표(,)로 구분하여 나열합니다.
setNumber = set([4, 5, 6])
setNumber.update([8, 9, 10])
print(setNumber) # {4, 5, 6, 8, 9, 10}
위의 코드에서 setNumber.update([8, 9, 10])
는 세트 setNumber
에 여러 값을 추가한 것을 출력 결과 {4, 5, 6, 8, 9, 10}
를 통해 확인할 수 있습니다.
특정 값 삭제
remove()에 인덱스가 아닌 요솟값을 입력하여 삭제합니다.
setNumber = set([4, 5, 6])
setNumber.update([8, 9, 10])
print(setNumber) # {4, 5, 6, 8, 9, 10}
setNumber.remove(8)
print(setNumber) # {4, 5, 6, 9, 10}
위에서 setNumber.remove(8)
는 세트 setNumber
에서 값을 삭제합니다. 출력 결과는 {4, 5, 6, 9, 10}
입니다. setNumber.remove(8)를 새로운 변수에 할당하여 새로운 변수를 출력하면 None값을 반환합니다.
2024.03.11 - [Python] - 파이썬 문법 빠르게 훑어보기: 리스트(List)와 튜플(Tuple)
파이썬 문법 빠르게 훑어보기: 리스트(List)와 튜플(Tuple)
파이썬의 컬렉션 타입에는 리스트와 튜플, 딕셔너리와 세트가 있습니다. 여기서는 리스트와 튜플을 다루는 방법에 대해 알아보겠습니다. 목차1. 리스트 (List)2. 튜플 (Tuple) 1. 리스트 (List) 여
it-learner.tistory.com