2016-10-14 2 views
0

목록 사전이 있으며 값이 중복 된 키의 경우 하나의 키만 얻으려고합니다. 예를 들어 :목록 사전에 같은 값의 키 병합

dic2 = {y: x for x, y in dic.items()} 
:

dic1 = {8: [0, 4], 1: [0, 4], 7:[3], 4:[1, 5], 11:[3]} 

결과 사전

dic2 = {1: [0, 4], 7:[3], 4:[1, 5]} 

전략은 독특한 될 것입니다 키의 값을 반전 한 후 다시 각각의 값으로 키를 반대하는 것

목록이 해시 가능하지 않기 때문에 오류가 발생했습니다. 같은 값을 가진 키의 경우 하나의 키로 사전을 얻으려면 어떻게해야합니까?

답변

5

목록을 해시 가능 인 튜플로 변환합니다.

dic2 = {tuple(y): x for x, y in dic.items()} 

당신은 당신이 좋아하는 경우 이후에 목록으로 다시 변환 할 수 있습니다

result = {v:list(k) for k,v in dic2.items()} 
+0

잘 TigerhawkT3를 작동합니다. 감사! – HarpMan

+0

이 경우 가장 높은 키를 저장하려면 어떻게해야합니까? – HarpMan

+0

@RafaelFrinhani -'max (result) ' – TigerhawkT3