파이썬(python) & 크롤링(crawling) - 008
[파이썬(python) & 크롤링(crawling) - 008]
파이썬(python) 기본 - 08
데이터 구조
집합(set)
- 중괄호로도 선언은 가능하나 공식적으로는 data_set = set()로 선언한다.
- 집합은 딕셔너리와 다르게 값(value)만 나열한다.
- type을 확인하고자 할 때 ==> type(data_set) ==> 출력값: set
- 값이 하나만 있는 집합은 {}가 아닌 ()로 선언이 가능 ==> data_set = set(‘apple’)
- 단 두개 이상은 괄호()로 선언 불가능
- 읽기 : index 번호를 지원하지 않는다 다만 반복문은 지원한다.
'nokia' in data_set
# 출력값
False
'apple' in data_set
# 출력값
True
- 집합 안에 데이터가 있는지 확인
data_dict = {'한국':'KR', '일본':'JP'}
del data_dict['한국']
data_dict
# 출력값
{'일본': 'JP', '미국': 'US'}
-
합집합 ==> A B - 교집합 == A & B
- 차집합(합집합 - 교집합) ==> A - B
- A집합에만 있거나 B집합에만 있는 데이터 추출 ==> A ^ B
# 스마트폰 생산업체
data1 = {'apple', 'samsumg', 'lg'}
# TV 생산업체
data2 = {'samsumg', 'lg', 'xiaomi'}
#스마트폰 또는 TV를 생산하는 업체는?(합집합)
data1 | data2
# 출력값
{'apple', 'lg', 'samsumg', 'xiaomi'}
#스마트폰과 TV를 동시에 생산하는 업체는?(교집합)
data1 & data2
# 출력값
{'lg', 'samsumg'}
#오직 스마트폰만 생산하는 업체는?(차집합)
data1 - data2
# 출력값
{'lg', 'samsumg'}
#스마트폰과 TV 중 둘 중 하나만 생산하는 업체는?(합집합-교집합)
data1 ^ data2
# 출력값
{'apple', 'xiaomi'}
- 데이터 key만 출력 ==> list 형식으로 출력 됨
data_dict.keys()
# 출력값
dict_keys(['일본', '미국'])
#반복문을 돌려 하나씩 출력되게 하기
for key in data_dict.keys():
print(key)
# 출력값
일본
미국
- 데이터 값(value)만 출력 ==> list 형식으로 출력 됨
data_dict.values()
# 출력값
dict_values(['JR', 'US'])
#반복문을 돌려 하나씩 출력되게 하기
for value in data_dict.values():
print(value)
# 출력값
JR
US
- 데이터 키(key)와 값(value) 전체 출력 ==> list 형식으로 출력 됨
data_dict.items()
# 출력값
dict_items([('일본', 'JR'), ('미국', 'US')])
#반복문을 돌려 하나씩 출력되게 하기
for keyAndValue in data_dict.items():
print(keyAndValue)
# 출력값 ==> tuple 형식으로 출력 됨
('일본', 'JR')
('미국', 'US')
- 실제로 많이 사용되는 경우는 key값을 모두 가져오고 그 key값을 모두 출력하는 것이다.
for key in data_dict.keys():
print(data_dict[key])
# 출력값
JR
US
- 집합은 index 번호로 지칭되지 않기에 순서가 없고 중복이 없다.
list안에 중복데이터를 제거하고자 할 때 집합을 많이 사용한다.
data_list = ['apple', 'dell', 'samsung', 'apple', 'dell', 'nokia']
# data_list를 집합으로 변경 시 중복값은 자동으로 제거된다.
set(data_list)
# data_list를 다시 dataA에 담아 list 형식으로 만들기
dataA = set(data_list)
# dataA를 list 형식으로 출력하기
list(dataA)
# 출력값
['dell', 'samsung', 'apple', 'nokia']
- number_list가 다음과 같은 리스트일 때 중복 숫자를 제거한 number_list1 집합을 만들고, 출력하세요
number_list = [5, 1, 2, 2, 3, 3, 4, 5, 5, 6, 7, 8, 9, 9, 10, 10]
number_list1 = set(number_list)
number_list1
# 출력값
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
- number_list2에 다음과 같은 데이터를 순서대로 추가하고, 제거하세요
선언: [1, 2, 3]
추가: 4
추가(업데이트): [5, 6]
제거: 2
number_list2 = {1, 2, 3}
number_list2.add(4) # 하나의 데이터를 추가할 때는 add
number_list2.update([5, 6]) # 여러 데이터를 추가할 때는 리스트 형태로 update 함수를 사용
number_list2.remove(2) # 특정 데이터를 삭제할 때는 remove
number_list2
# 출력값
{1, 3, 4, 5, 6}
댓글남기기