2014-11-05 5 views
3

사전이나 목록과 같은 컨테이너가 있다고 가정 해 봅시다. 컨테이너의 모든 값이 주어진 값 (예 : None)과 같은지 테스트하는 Python 방법은 무엇입니까?컨테이너의 모든 항목 값을 테스트하는 방법은 무엇입니까?

내 순진한 구현은 내가 C에서하는 것처럼 배웠던 것처럼 부울 플래그를 사용하기 때문에 코드가 비슷해 보일 수 있습니다.

a_dict = { 
    "k1" : None, 
    "k2" : None, 
    "k3" : None 
} 

carry_on = True 
for value in a_dict.values(): 
    if value is not None: 
     carry_on = False 
     break 

if carry_on: 
    # action when all of the items are the same value 
    pass 

else: 
    # action when at least one of the items is not the same as others 
    pass 

이 방법은 훌륭하게 작동하지만, 파이썬이 다른 일반적인 패턴을 처리하는 방법이 훌륭하다고 생각하지는 않습니다. 이 작업을 수행하는 적절한 방법은 무엇입니까? 아마도 내장 된 all() 함수는 내가 원했던 것을 할 것이라고 생각했지만 불리언 문맥의 값만 테스트 했으므로 임의의 값과 비교하고 싶습니다.

답변

8

당신이 generator expression에 추가하는 경우는 여전히 all을 사용할 수 있습니다 : 임의의 값으로,

if all(x is None for x in a_dict.values()): 

을 또는 :

if all(x == value for x in a_dict.values()): 
+0

그것이 안된다은'X는 일치하는 None' 아니다 이 예제에서'carry_on'을 가지고 있습니까? –

+0

나는 OP가 말했다 : "컨테이너의 모든 값이 주어진 값 (예 : 없음)에 ** 평등 ** 인 경우 파이썬으로 테스트하는 방법은 무엇입니까?" – iCodez

+0

완벽한, 감사합니다! –

관련 문제