티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Extract a subset of key-value pairs from dictionary?
딕셔너리에서 일부 키-값 쌍을 추출하는 방법은 무엇인가요?
문제 내용
I have a big dictionary object that has several key value pairs (about 16), but I am only interested in 3 of them. What is the best way (shortest/efficient/most elegant) to subset such dictionary?
저는 큰 사전 객체가 있고 그 안에 여러 개의 키-값 쌍이 있지만, 그 중 3개만 관심이 있습니다. 이러한 사전의 부분집합을 만드는 가장 좋은 방법(가장 짧은/효율적인/가장 우아한 방법)은 무엇일까요?
The best I know is:
내가 알기로는 최선의 방법은 다음과 같다:
bigdict = {'a':1,'b':2,....,'z':26}
subdict = {'l':bigdict['l'], 'm':bigdict['m'], 'n':bigdict['n']}
I am sure there is a more elegant way than this.
이것보다 더 우아한 방법이 있을 것이라고 확신합니다.
높은 점수를 받은 Solution
You could try:
당신은 다음과 같이 시도해볼 수 있습니다:
dict((k, bigdict[k]) for k in ('l', 'm', 'n'))
... or in
Python 3
Python versions 2.7 or later (thanks to Fábio Diniz for pointing that out that it works in 2.7 too):
... 혹은 파이썬 3, 파이썬 버전 2.7 이상에서도 작동한다(감사합니다, Fábio Diniz).
{k: bigdict[k] for k in ('l', 'm', 'n')}
Update: As Håvard S points out, I'm assuming that you know the keys are going to be in the dictionary - see his answer if you aren't able to make that assumption. Alternatively, as timbo points out in the comments, if you want a key that's missing in bigdict
to map to None
, you can do:
업데이트: Håvard S 가 가리키듯이, 당신이 딕셔너리에 키가 있을 것이라는 가정하에 이를 적용하는 것입니다. 만약 그런 가정을 할 수 없다면 그의 답변을 확인하세요. 또는 댓글에서 timbo 가 가리키듯이, bigdict 에서 빠진 키를 None 으로 매핑하고 싶다면 다음과 같이 할 수 있습니다:
{k: bigdict.get(k, None) for k in ('l', 'm', 'n')}
If you're using Python 3, and you only want keys in the new dict that actually exist in the original one, you can use the fact to view objects implement some set operations:
만약 Python 3를 사용하고 원래의 사전에 실제로 존재하는 키만 새로운 사전에서 원한다면, 객체를 보는 방법이 일부 집합 연산을 구현한다는 사실을 이용할 수 있습니다.
{k: bigdict[k] for k in bigdict.keys() & {'l', 'm', 'n'}}
가장 최근 달린 Solution
An alternative approach for if you want to retain the majority of the keys while removing a few:
만약 몇 개의 키를 제거하면서 대부분의 키를 유지하려는 경우 대안적인 접근 방식은 다음과 같습니다.
{k: bigdict[k] for k in bigdict.keys() if k not in ['l', 'm', 'n']}
출처 : https://stackoverflow.com/questions/5352546/extract-a-subset-of-key-value-pairs-from-dictionary
'개발 > 파이썬' 카테고리의 다른 글
하나의 리스트를 기준으로 다른 리스트 정렬하기 (0) | 2023.02.04 |
---|---|
점 "."을 사용하여 딕셔너리 멤버에 접근하기 (0) | 2023.02.04 |
CSV 파일 한 줄씩 작성하기 (0) | 2023.02.03 |
.py 파일과 .pyc 파일의 차이점 (0) | 2023.02.03 |
JSON 파일 로드하고 파싱하기 (0) | 2023.02.02 |