티스토리 뷰

반응형

Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.

Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.

 

아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.

Reverse / invert a dictionary mapping

딕셔너리 매핑 반전하기

 문제 내용 

Given a dictionary like so:

다음과 같은 딕셔너리가 주어졌을 때:
my_map = {'a': 1, 'b': 2}

 

How can one invert this map to get:

어떻게 하면 이 맵을 뒤집어서 다음을 얻을 수 있을까요?
inv_map = {1: 'a', 2: 'b'}

 

 

 높은 점수를 받은 Solution 

Python 3+:

파이썬 3+:
inv_map = {v: k for k, v in my_map.items()}

 

Python 2:

파이썬 2:
inv_map = {v: k for k, v in my_map.iteritems()}

 

 

 가장 최근 달린 Solution 

Lot of answers but didn't find anything clean in case we are talking about a dictionary with non-unique values.

많은 답변이 있지만 고유하지 않은 값을 가진 딕셔너리에 대해 이야기하는 경우를 대비하여 완전한 해결책을 찾지 못했습니다.

 

A solution would be:

해결책은 다음과 같습니다.
from collections import defaultdict

inv_map = defaultdict(list) 
for k, v in my_map.items(): 
    inv_map[v].append(k)

 

Example:

예:

 

If initial dict my_map = {'c': 1, 'd': 5, 'a': 5, 'b': 10}

초기 딕셔너리가 my_map = {'c': 1, 'd': 5, 'a': 5, 'b': 10}인 경우

 

then, running the code above will give:

위의 코드를 실행하면 다음을 얻을 수 있습니다.
{5: ['a', 'd'], 1: ['c'], 10: ['b']}

 

 

출처 : https://stackoverflow.com/questions/483666/reverse-invert-a-dictionary-mapping

반응형
댓글
공지사항
최근에 올라온 글