>백엔드 개발 >파이썬 튜토리얼 >Python에서 세트로 변환한 후 목록 순서를 어떻게 유지할 수 있습니까?

Python에서 세트로 변환한 후 목록 순서를 어떻게 유지할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-10 18:56:10929검색

How Can I Maintain List Order After Converting to a Set in Python?

세트로 변환할 때 목록 순서 유지

Python에서 목록을 세트로 변환할 때 세트로 인해 요소 순서가 변경될 수 있습니다. 순서가 없는 데이터 구조입니다. 원래 주문을 유지해야 하는 경우 이러한 동작은 불편할 수 있습니다.

  1. 주문 변경 이유

세트는 빠른 회원 조회를 제공하도록 설계되었습니다. 요소를 해시 값으로 저장합니다. 요소가 집합에 추가되는 순서는 유지되지 않으므로 목록을 집합으로 변환하면 검색 효율성을 최적화하기 위해 요소가 재정렬됩니다.

  1. 집합 연산으로 순서 유지

아. List Comprehension

순서를 유지하면서 목록에서 특정 요소를 제거해야 하는 경우 List Comprehension을 사용할 수 있습니다. 예:

a = [1, 2, 20, 6, 210]
b = set([6, 20, 1])
result = [x for x in a if x not in b]  # [2, 210]

b. OrderedDict(Python 3.7 )

Python 버전 3.7 이상의 경우 collections.OrderedDict를 사용하여 순서가 지정된 세트를 만들 수 있습니다. 세트 연산 후에도 요소 순서를 유지합니다.

from collections import OrderedDict

a = OrderedDict.fromkeys([1, 2, 20, 6, 210])
b = OrderedDict.fromkeys([6, 20, 1])
result = OrderedDict.fromkeys(x for x in a if x not in b)  # OrderedSet([(2, None), (210, None)])

c. OrderedSet(이전 Python 버전)

이전 Python 버전에서는orderedset 패키지를 사용하여 유사한 기능을 구현할 수 있습니다.

import orderedset

a = orderedset.OrderedSet([1, 2, 20, 6, 210])
b = orderedset.OrderedSet([6, 20, 1])
result = orderedset.OrderedSet(x for x in a if x not in b)

이러한 기술을 사용하면 집합 작업을 수행할 수 있습니다. 원래 목록 순서를 유지하면서

위 내용은 Python에서 세트로 변환한 후 목록 순서를 어떻게 유지할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:JSON 및 그 변형다음 기사:JSON 및 그 변형