반응형
질문
나는 여러 개의 키-값 쌍(약 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'}}
반응형
댓글