2013-12-10 6 views
0

키가 값이 사전에 중복되면 키를 제거하는 함수를 만들어야합니다. 예를 들어 ...사전의 특정 키 제거

remove_dups({1:4, 2:4, 3:2}) 
{3:2} 
remove dups({1:2, 2:5}) 
{1:2, 2:5} 

나는 어떻게 해야할지 잘 모르겠다. 목록 내포 또는 가져 오기없이이 작업을 수행하는 방법을 알아야합니다. dict.values ​​() - -

+1

아마도 도움이 될 수 있습니다 : http://stackoverflow.com/questions/14766904/python-remove-duplicate-value-in-a-combined-dictionarys-list –

+0

가능한 중복 [Python : 값으로 사전 정렬] (http://stackoverflow.com/questions/613183/python-sort-a-dictionary-by - 값) – tiago

답변

1
def remove_dups(d): 
    c, result = {}, {} 
    for item in d.values(): 
     c[item] = c.get(item, 0) + 1 
    for k, v in d.items(): 
     if c[v] == 1: 
      result[k] = v 
    return result 

from collections import Counter 
def remove_dups(d): 
    c = Counter(d.values()) 
    return {k:v for k, v in d.items() if c[v] == 1} 
처럼 Counter 및 DICT 이해를 사용하는 것이 작업을 수행하는 가장 좋은 및 간단한 방법을 (그것이 숙제 같은 소리 때문에 나는 전체 코드를 제공하지 않습니다)
+0

죄송합니다. 목록 작성 또는 가져 오기없이이 작업을 수행하는 방법을 알아야한다는 것을 잊어 버렸습니다. – user3014764

+0

@ user3014764 지금 답변을 확인하십시오 – thefourtheye

+0

정말 고마워요! – user3014764

0

사전 기능을 갖는리스트로

{1, 2, 4 : 4 : 3 (2)}의 모든 값을 얻는 .values ​​() = 4,4,2를 ]

그런 다음 사용자 카운터 (컬렉션 가져 오기 카운터에서)를 수행 할 수 있습니다. - 1보다 큰 수로 값을 확인하고 해당 값과 연결된 키를 제거합니다.

+0

숙제가 아닙니다. 나는 나의 이전 시험을보고있는 나의 최종 시험을 위해 공부하고있다. 그리고 나는이 질문에 달라 붙었다, 나는 가능한 한 많이 배우려고 노력하고있다. – user3014764

+0

문제 없음 - 상기 용액을 계속 - 데프 remove_dups (d) C = 카운터 (d.values ​​()) keys_to_remove = [] d.iteritems()에서 K, V 대 : C의 경우 [V ]> 1 : keys_to_remove.append (k) keys_to_remove의 k에 대한 : del (dict [k]) –