본문 바로가기
Python/Python FAQ

Python 딕셔너리에서 키-값 쌍의 하위 집합을 추출하시겠습니까?, Extract a subset of key-value pairs from dictionary?

by 베타코드 2023. 11. 16.
반응형

질문


나는 여러 개의 키-값 쌍(약 16개)을 가진 큰 사전 객체를 가지고 있지만, 나는 그 중 3개에만 관심이 있습니다. 이러한 사전을 하위 집합으로 만드는 가장 좋은 방법(가장 짧고 효율적이며 우아한 방법)은 무엇인가요?

내가 알고 있는 최상의 방법은 다음과 같습니다:

bigdict = {'a':1,'b':2,....,'z':26} 
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}

나는 이보다 더 우아한 방법이 있다고 확신합니다.


답변


당신은 다음을 시도해볼 수 있습니다:

dict((k, bigdict[k]) for k in ('l', 'm', 'n'))

... 또는 Python 3 Python 버전 2.7 이상에서도 작동한다는 점에 대해 (감사합니다, Fábio Diniz님):

{k: bigdict[k] for k in ('l', 'm', 'n')}

업데이트: Håvard S님이 가리키는 대로, 딕셔너리에 키가 있는 것을 알고 있다고 가정하고 있습니다. 만약 그런 가정을 할 수 없다면 그의 답변을 참조하세요. 또는 timbo님이 댓글에서 지적한 대로, bigdict에 없는 키를 None으로 매핑하려면 다음과 같이 할 수 있습니다.

{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}

만약 Python 3를 사용하고, 새로운 딕셔너리에는 원래 딕셔너리에 실제로 존재하는 키만 포함하고 싶다면, 객체가 일부 집합 연산을 구현한다는 사실을 이용할 수 있습니다:

{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}
반응형

댓글