HOWTO · Python
Python에서 정렬된 집합 만들기
OrderedSet 클래스는 Python에서 정렬된 집합을 만드는 데 사용할 수 있습니다.
이 페이지의 내용
이 튜토리얼에서는 Python의 OrderedSet 클래스에 대해 설명합니다.
리스트와 딕셔너리, 컬렉션을 다루는 방법은 파이썬 튜토리얼 하우투 모음의 리스트·딕셔너리·컬렉션 가이드에 함께 모여 있습니다.
Python에서 OrderedSet 클래스를 사용하여 정렬된 집합 만들기
시작하려면 먼저 Python에서 집합이 무엇을 의미하는지 정의해 보겠습니다. 그것은 어떻게 든 관련이 있는 별개의 개체의 잘 정의된 컬렉션입니다. 이 정의에는 주문이 포함되어 있지 않습니다. 따라서 정의에 따라 집합에는 순서가 없습니다.
그러나 집합 요소의 원래 순서를 유지해야 하는 시나리오가 발생하면 OrderedSet 클래스를 사용할 수 있습니다. OrderedSet 클래스를 사용하려면 먼저 Python 패키지 관리자를 사용하여 장치에 ordered-set 패키지를 설치해야 합니다. ordered-set 패키지를 설치하는 명령은 다음과 같습니다.
pip install ordered-set
이제 각 집합 요소의 순서를 유지하는 집합을 만들 수 있습니다. 이 프로세스는 다음 프로그램에서 보여줍니다.
from ordered_set import OrderedSet
setABC = OrderedSet(["A", "B", "C"])
print(setABC)
출력:
OrderedSet(['A', 'B', 'C'])
위의 코드에서 OrderedSet 클래스를 사용하여 정렬된 집합을 만들고 각 인덱스의 값을 순서대로 표시했습니다. 이 OrderedSet은 목록과 집합 데이터 구조 사이의 하이브리드인 변경 가능한 데이터 구조입니다. 따라서 이 집합을 목록으로 초기화해야 합니다. 이런 식으로 집합은 각 요소의 인덱스를 유지합니다.
인덱싱을 단순화하기 위해 add() 함수는 집합에 추가된 새 요소의 인덱스를 반환합니다. 이것은 아래의 다음 프로세스에 표시됩니다.
print(setABC.add("D"))
출력:
3
setABC에 다른 요소를 추가하고 위의 코드에서 add() 함수가 반환한 값을 표시했습니다. index() 함수를 사용하여 특정 요소의 인덱스를 얻을 수도 있습니다. 이것은 다음 코드 스니펫에 나와 있습니다.
print(setABC.index("C"))
출력:
2
위 코드에서 index() 함수로 설정된 setABC 내부의 C 요소의 인덱스를 검색했습니다. 또한 |, & 및 - 연산자를 사용하여 이러한 정렬된 집합에 대해 합집합, 교집합 및 차분과 같은 집합의 일반적인 작업을 수행할 수도 있습니다.
다음 코드 예제는 순서가 지정된 집합에서 합집합을 수행하는 방법을 보여줍니다.
from ordered_set import OrderedSet
setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC | setDEF
print(solutionSet)
출력:
OrderedSet(['A', 'B', 'C', 'D', 'E', 'F', 'G'])
집합 연산자 |를 사용하여 setABC 및 setDEF 집합의 합집합을 계산했습니다. 위의 코드에서. 아래의 다음 프로그램은 정렬된 집합에서 교집합을 수행하는 방법을 보여줍니다.
from ordered_set import OrderedSet
setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC & setDEF
print(solutionSet)
출력:
OrderedSet(['D'])
위의 코드에서 & 연산자를 사용하여 setABC 및 setDEF 세트의 교집합을 계산했습니다. 아래의 다음 코드 예제는 두 개의 정렬된 집합 간의 차이를 계산하는 방법을 보여줍니다.
from ordered_set import OrderedSet
setABC = OrderedSet(["A", "B", "C", "D"])
setDEF = OrderedSet(["D", "E", "F", "G"])
solutionSet = setABC - setDEF
print(solutionSet)
출력:
OrderedSet(['A', 'B', 'C'])
위의 코드에서 - 연산자를 사용하여 setABC 및 setDEF 세트의 차이를 계산했습니다.
기본적으로 Python은 순서가 지정된 집합을 지원하지 않습니다. 그래도 우리는 정렬된 집합을 만드는 기능을 제공하는 ordered-set이라는 외부 패키지를 설치할 수 있습니다. 이 프로세스는 Python 버전 2.6 이상에서 지원됩니다.
이러한 정렬된 집합은 Python의 원래 목록과 집합을 혼합한 것입니다. 따라서 이 세트를 목록으로 초기화해야 합니다. 이 새로운 집합은 합집합, 교집합, 차등 집합의 모든 일반적인 기능을 제공합니다.