2016-06-30 5 views
0

하나의 단일 명령에 특정 명령을 제외한 사전의 키 목록을 만드는 방법이 있습니까? 내가 list1 = aDict.keys().remove('b') 같은 STH를 찾고 있어요Python dict 키 + 목록 제거

aDict = {'a': 'cat', 'b': 'dog', 'c': 'cow'} 
list1 = aDict.keys() 
list1.remove('b') 

:이 개 명령이 수행 할 수 있습니다 사용

. 나는 이것이 작동하지 않는다는 것을 안다, 그러나 작동하는 sth가 거기 있는가?

+0

왜 하나의 명령으로 필요합니까? –

답변

3

목록 이해를 사용하여 결과를 반복 할 때 필터 할 수 있습니다. 예를 들어 :

list1 = [key for key in aDict if key != 'b']

그것을 할 것입니다. 정답은 당신이 제공하는 예제를 사용하는 수 있습니다 말했다

list1 = [key for key in aDict.keys() if key != 'b'] 

:

1

은 당신이 아마 찾고있는 것은 지능형리스트입니다. 파이썬 스타일 가이드는 코드를 작성하여 자신이하는 일의 명확성을 극대화 할 것을 제안합니다. 한 - 라이너에서 그렇게할만한 이유가 없다면 더 긴 코드를 사용하여 의도를 명확하게하십시오.

+1

나는 동의하지 않는다. 일단 당신이 그들을 보는 데 익숙해지면, 목록의 이해력은 아름답게 읽을 수 있습니다. 당신과 내가 대답 한 것들은 우리의 의도가 무엇인지 한눈에 알 수 있습니다. 1)리스트를 만들고, 2) aDict의 키들을, 3) b를 제외하고. 그것은 매우 명백합니다! –

+1

@KirkStrauser 나는 대부분 동의하고, 나는 절대적으로 목록 내포물을 좋아한다. 그러나 일부 논리를 하나의 라이너로 만드는 것에 대한 질문은 로직을 한 줄짜리로 만드는 것이 반드시 더 나은 코드로 작성되지는 않는다는 경고 스티커가 있어야한다고 생각합니다. –

+0

오. 이 특별한 경우는 한 번에 간결하고 효율적이며 읽을 수있는 원 라이너에 대한 훌륭한 사례라고 생각합니다. 나는 코드 골프를 위해 많은 인내심을 가지고 있지 않다. –

관련 문제