2014-04-10 3 views
3

파이썬 언어. 사전의 키 값을 제거하려면 어떻게해야합니까?

나는 예를 들어, 사전에 키를 제거하는 방법을 알고 :

def remove_zeros(dict) 
    dict = {'B': 0, 'C': 7, 'A': 1, 'D': 0, 'E': 5} 
    del dict[5] 
    return dict 

내가 사전에서 0으로 모든 값을 제거하고 알파벳 키를 정렬하는 방법을 알고 싶어요. 위의 예제를 사용하면 [A, C, E]를 얻고 키 값 B와 D를 완전히 없애고 싶습니다.

정렬하려면 dict.sort()를 사용합니까?

사용해야하는 특수 기능이 있습니까? 당신이 코드를 때

답변

2
sorted(k for (k, v) in D.iteritems() if v) 
1

은 때때로 당신은 다시 걸음을 오히려 하나의 특정 일을 전체 큰 그림을 놓칠 것보다, 당신의 의도에 대해 이동하려고합니다. 파이썬에서는 목록/사전 이해라는이 기능을 사용하여 입력을 필터링하여 원하는 결과를 얻을 수 있습니다. 당신이 0 인 당신의 사전에있는 모든 값을 필터링 할 그래서, 단순히이있다 :

{k, v for k, v in d.items() if v != 0} 

을 이제 사전, 해시 테이블입니다 기본적으로 그들은 정렬되지 않습니다,하지만 당신을 도울 수있는 클래스가있다 this in collections. 정렬을 용이하게하기 위해 OrderedDict 클래스를 사용하여 코드는 다음과 같이 종료됩니다 :

OrderedDict(sorted(((k, v) for k, v in d.items() if v != 0)), key=lambda t: t[0]) 

또한, 같은 dict 같은 내장 유형 또는 메소드와 같은 이름으로 변수를 이름을 매우 권할 수 있습니다.

관련 문제