본문 바로가기
programming/Python

파이썬 세트 결합과 합치기 Python Set Join

by 개코 - 개발과 코딩 2021. 9. 10.

파이썬은 서로 다른 세트를 합칠 수 있다 이것을 조인 결합 join 이라 한다. 파이썬 조인은 세트 컬렉션의 특성을 따른다. 중복값을 배제하거나 중복값만 출력할 수 있다. 메서드명은 조금 복잡하지만, 이 기능을 익히면 코딩할 때 불필요한 작업을 피할 수 있다.

 

파이썬 세트 결합과 합치기
Python Set Join

파이썬 세트를 다루면서 이미 알고 있는 하나가 있다.

바로 Set.update() 함수를 사용하는 방법이다.

Set.update() 함수를 사용하면 서로 다른 세트를 결합할 수 있고, 다른 컬렉션 또한 결합할 수 있다.

원본 세트 데이터에 다른 세트 데이터를 결합하는 것은 update() 함수 외에도 몇가지가 더 있다.

 

update() 함수 이용하여 결합하기

update() 함수는 이미 여러차례 사용했지만 다시 한번 보고 넘어가자.

파이썬 세트 결합을 위해 자주 사용하는 함수가 update() 일 것이다.

파이썬 세트 update() 함수는 원본 세트 데이터에 다른 세트 데이터를 추가로 결합하는 것이다.

사용법은 Set.update( 세트데이터 ) 이다.

print('----------')

vSet_Company = {"Blank Pink", "YG Ent.", "블랙핑크"}
vSet_Member = {"Blank Pink", "지수", "제니", "로제", "리사"}

vSet_Company.update(vSet_Member)
print("세트 Set update : ", type(vSet_Company), len(vSet_Company), vSet_Company)

print('----------')

서로 다른 세트끼리 결합은 되었지만 중복되는 값은 하나만 출력되는 것을 알 수 있다.

 

union() 함수 이용하여 결합하기

update() 함수와는 다르게 서로 다른 세트 데이터가 결합하면 새로운 결합 데이터를 만든다.

이것이 union() 함수의 역할이다.

새로운 결합 데이터를 리턴하기 때문에 별도의 변수에 넣어야 한다.

print('----------')

vSet_Company = {"Blank Pink", "YG Ent.", "블랙핑크"}
vSet_Member = {"Blank Pink", "지수", "제니", "로제", "리사"}

vSet = vSet_Company.union(vSet_Member)
print("세트 Set union : ", type(vSet), len(vSet), vSet)

print('----------')

새로운 세트 데이터를 만들고 출력을 해 본 결과이다.

update() 한 결과와 같지만 세트 데이터 자체는 새롭게 만들어 진 것과 차이가 있다.

 

intersection_update() 함수 이용하여 결합하기

원본 파이썬 세트 데이터와 새로운 세트 데이터를 결합했을 때
중복된 데이터만 출력할 수 있다.

intersection_update() 함수를 사용하면 서로 다른 세트 데이터 결합시
중복된 데이터만 추출할 수 있다.

print('----------')

vSet_Company = {"Blank Pink", "YG Ent.", "블랙핑크"}
vSet_Member = {"Blank Pink", "지수", "제니", "로제", "리사"}

vSet_Company.intersection_update(vSet_Member)
print("세트 Set intersection_update : ", type(vSet_Company), len(vSet_Company), vSet_Company)

print('----------')

서로 다른 세트 데이터를 intersection_update() 함수로 결합해 본 결과이다.

중복된 자료만 출력된다는 것을 알 수 있다.

 

intersection() 함수 이용하여 결합하기

intersection() 함수는 intersection_update() 와 같은 기능을 한다.

차이점은 새로운 세트 데이터를 만든다는 점에서 차이가 있다.

print('----------') 

vSet_Company = {"Blank Pink", "YG Ent.", "블랙핑크"}
vSet_Member = {"Blank Pink", "지수", "제니", "로제", "리사"}

vSet = vSet_Company.intersection(vSet_Member)
print("세트 Set intersection : ", type(vSet), len(vSet), vSet)

print('----------')

intersection() 함수나 intersection_update() 함수나 같은 기능이다.

intersection() 함수는 새로운 세트 데이터를 만든다는 점에서 차이가 있다.

 

symmetric_difference_update() 함수 이용하여 결합하기

서로 다른 세트 데이터를 결합했지만, 중복되지 않은 데이터만 출력하고 싶다면
symmetric_difference_update() 함수를 사용한다.

세트 데이터가 서로 결합은 되지만 중복된 값은 배제된다.

print('----------') 

vSet_Company = {"Blank Pink", "YG Ent.", "블랙핑크"}
vSet_Member = {"Blank Pink", "지수", "제니", "로제", "리사"}

vSet_Company.symmetric_difference_update(vSet_Member)
print("세트 Set symmetric_difference_update : ", type(vSet_Company), len(vSet_Company), vSet_Company)

print('----------')

중복값인 Black Pink 란 단어는 제거되고 중복되지 않은 다른 값들은 정상적으로 결합되었다.

 

symmetric_difference() 함수 이용하여 결합하기

symmetric_difference() 함수는 symmetric_difference() 함수와 기능적으로 같다.

차이가 있다면 새로운 세트 데이터를 만들어 리턴한다.

이 함수 또한 중복된 값은 배제하고 결합된다.

print('----------') 

vSet_Company = {"Blank Pink", "YG Ent.", "블랙핑크"}
vSet_Member = {"Blank Pink", "지수", "제니", "로제", "리사"}

vSet = vSet_Company.symmetric_difference(vSet_Member)
print("세트 Set symmetric_difference : ", type(vSet), len(vSet), vSet)

print('----------')

symmetric_difference_update() 함수를 사용했을 때와 같은 결과를 보여준다.

하지만, 두 세트 데이터가 중복값인 Black Pink 단어는 배제되었으며, 새로운 세트 데이터가 만들어 진 것을 알 수 있다.

반응형

댓글