>백엔드 개발 >파이썬 튜토리얼 >Python에서 빈 목록 사전을 만들 때 공유 참조를 피하는 방법은 무엇입니까?

Python에서 빈 목록 사전을 만들 때 공유 참조를 피하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-30 18:50:14520검색

How to Avoid Shared References When Creating Dictionaries of Empty Lists in Python?

빈 목록 사전 생성의 어려움 이해

Python에서는 공유 참조로 인해 빈 목록 사전을 생성하는 것이 까다로울 수 있습니다. dict.fromkeys()를 사용할 때 목록 객체의. 하나의 키에 요소를 추가하려고 하면 참조로 인해 모든 키가 동일한 요소로 업데이트됩니다.

Fromkeys 메서드의 동작

dict.fromkeys에 대한 두 번째 인수가 ()(이 경우 빈 목록)가 전달되고 결과 사전의 모든 값은 목록 개체에 대한 동일한 참조를 공유합니다. 하나의 키를 수정하면 다른 모든 키에 영향을 미칩니다.

대체 솔루션

이 문제를 방지하기 위해 대체 솔루션이 있습니다.

  • 딕트 이해(Python 2.7 및 위):
data = {k: [] for k in range(2)}

이렇게 하면 각 키에 고유하고 빈 목록이 있는 사전이 생성됩니다.

  • Dict 생성자를 사용한 목록 이해 (Python 버전 이전 2.7):
data = dict([(k, []) for k in range(2)])

목록 이해를 사전으로 변환하여 dict 이해와 동일한 결과를 얻습니다.

  • 생성기 표현식 Dict 생성자(Python 2.4-2.6):
data = dict((k, []) for k in range(2))

이 버전에서는 생성기 표현식이 목록 이해 단계를 우회하여 dict 생성자에 직접 전달됩니다. 표현식을 둘러싼 괄호는 생략할 수 있습니다.

이러한 대체 방법을 활용하면 빈 목록의 사전을 올바르게 생성하여 다른 키에 영향을 주지 않고 개별 키를 조작할 수 있습니다.

위 내용은 Python에서 빈 목록 사전을 만들 때 공유 참조를 피하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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