수학에서, 거기 세트 및 명령 세트 (osets).
- set : 고유 요소의 정렬되지 않은 컨테이너 (구현 됨)
- oset : 고유 요소의 정렬 된 컨테이너 (NotImplemented)
Python에서는 세트 만 직접 구현됩니다. 일반 사전 키 ( 3.7+ )로 osets를 에뮬레이트 할 수 있습니다 .
주어진
a = [1, 2, 20, 6, 210, 2, 1]
b = {2, 6}
암호
oset = dict.fromkeys(a).keys()
# dict_keys([1, 2, 20, 6, 210])
데모
복제는 제거되고 삽입 순서는 유지됩니다.
list(oset)
# [1, 2, 20, 6, 210]
딕셔너리 키에 대한 세트와 유사한 작업.
oset - b
# {1, 20, 210}
oset | b
# {1, 2, 5, 6, 20, 210}
oset & b
# {2, 6}
oset ^ b
# {1, 5, 20, 210}
세부
참고 : 정렬되지 않은 구조는 정렬 된 요소를 배제하지 않습니다. 오히려 유지 된 순서는 보장되지 않습니다. 예:
assert {1, 2, 3} == {2, 3, 1} # sets (order is ignored)
assert [1, 2, 3] != [2, 3, 1] # lists (order is guaranteed)
목록 과 다중 집합 (mset)이 두 가지 더 매력적인 수학적 데이터 구조 라는 사실을 알게되면 기뻐할 수 있습니다 .
- list : 복제를 허용하는 정렬 된 요소 컨테이너 (구현 됨)
- mset : 복제를 허용하는 요소의 정렬되지 않은 컨테이너 (NotImplemented) *
요약
Container | Ordered | Unique | Implemented
----------|---------|--------|------------
set | n | y | y
oset | y | y | n
list | y | n | y
mset | n | n | n*
* 다중 집합은 collections.Counter()
딕셔너리와 유사한 다중도 (개수) 매핑을 사용하여 간접적으로 에뮬레이션 할 수 있습니다 .