>백엔드 개발 >파이썬 튜토리얼 >순서를 유지하면서 Python 목록에서 중복 사전을 효율적으로 제거하는 방법은 무엇입니까?

순서를 유지하면서 Python 목록에서 중복 사전을 효율적으로 제거하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-30 15:27:10310검색

How to Efficiently Remove Duplicate Dictionaries from a Python List While Preserving Order?

Python의 목록에서 중복 사전 제거

사전 목록을 처리할 때 동일한 키를 공유하는 중복 사전을 제거해야 하는 경우가 많습니다. 값 쌍. 이 문서에서는 Python을 사용하여 강력한 솔루션을 제공합니다.

문제 설명:

주어진 사전 목록에서 목표는 동일한 키와 값이 포함된 사전을 제거하는 것입니다.

해결책:

이를 달성하기 위해 2단계 접근 방식을 사용합니다.

  1. 사전을 해시 가능으로 변환 튜플:
    각 사전을 요소가 있는 튜플로 변환합니다. 키-값 쌍. 사전은 해시 가능하지 않지만 튜플은 해시 가능하므로 이 단계는 매우 중요합니다.
  2. 세트를 사용하여 중복 제거:
    튜플 목록에서 세트를 만듭니다. 세트는 자동으로 중복 항목을 제거하고 고유한 튜플만 남깁니다.

고유한 튜플에서 사전을 재구성하기 위해 사전 이해를 사용합니다. 코드 조각은 다음과 같습니다.

original_list = [{'a': 123}, {'b': 123}, {'a': 123}]

# Convert dictionaries to tuples
tuples = [tuple(d.items()) for d in original_list]

# Remove duplicates using a set
unique_tuples = set(tuples)

# Reconstruct dictionaries
result_list = [dict(t) for t in unique_tuples]

print(result_list)

출력:

[{'a': 123}, {'b': 123}]

순서 보존:

원본을 보존하는 경우 사전의 순서는 필수적입니다. 약간 다른 방식을 사용할 수 있습니다. 접근 방식:

  1. Seen 세트 만들기:
    고유한 튜플을 추적하려면 visible이라는 세트를 초기화합니다.
  2. 사전을 반복합니다.
    원본 목록을 반복하고 각 사전에 대해 이를 튜플로 변환합니다. 튜플이 표시된 세트에 없으면 이를 추가하고 결과 목록에 사전을 추가합니다.

코드는 다음과 같습니다.

original_list = [{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}, {'a': 123, 'b': 1234}]

seen = set()
result_list = []

for d in original_list:
    t = tuple(d.items())
    if t not in seen:
        seen.add(t)
        result_list.append(d)

print(result_list)

출력:

[{'a': 123, 'b': 1234}, {'a': 3222, 'b': 1234}]

위 내용은 순서를 유지하면서 Python 목록에서 중복 사전을 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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