2013-05-20 3 views
0

나는이 작업을 수행 할 수 있습니다이 경우여러 개의 if 문으로 변수를 설정할 수 있습니까?

x ='dog' 

testvar = 1 if x == 'dog' else 0 

내 x는 세 가지 중 하나가 될 수 있습니다.

x == 'dog'인 경우 testvar를 1로 설정하고 x == 'cat 인 경우 2와 같고 x가 0이면'0 '과 같게 설정하고 싶습니다. .isspace() == True.

가장 좋은 방법은 무엇입니까? 당신은하지만 마지막 else 문을 필요로 할

testvar = 1 if x == 'dog' else 2 if x == 'cat' else 0 if x.isspace() else None 

:

+0

, 나는 그것이 될 것이라고 생각을 끝없는 * if * 줄보다 읽기 쉽습니다. http://stackoverflow.com/a/374276/520567 – akostadinov

답변

11

당신은 if 문을 체인 수 있습니다. 부모 표현의 else 절을 작성 중첩 된 각 조건식과

testvar = 1 if x == 'dog' else (2 if x == 'cat' else (0 if x.isspace() else None)) 

: 파이썬으로 기본적으로이 본다.

데모 :

>>> x = 'cat' 
>>> 1 if x == 'dog' else 2 if x == 'cat' else 0 if x.isspace() else None 
2 
또 다른, 더 읽기 옵션은 매핑을 사용하는 것입니다

:

testmapping = {'dog': 1, 'cat': 2, ' ': 0} 
testvar = testmapping.get(x) 

데모 :이 관용구를 시도 할 수 있습니다

>>> testmapping = {'dog': 1, 'cat': 2, ' ': 0} 
>>> testmapping[x] 
2 
+0

감사합니다. 첫 번째 방법을 시도했지만 감사하지 않았습니다. 마지막으로 다른 것이 없습니다. – user2333196

관련 문제