2011-10-13 1 views
0

Hello Python 전문가,파이썬에서 변수에 "A 또는 B"를 할당하는 최단 방법은 무엇입니까?

"A"가 True (즉 존재)이고 "그렇지 않은 경우"인 경우 변수에 값 "A"를 할당하는 더 짧은 방법이 있는지 궁금합니다.

한다고 가정 내가 가진 :

mydict = {'a': 'apple', 'b': 'banana', 'c': 'Cherry'} 

을 그리고, 내가 이해,이 mydict의 VAR의 핵심으로 존재하지 않는 값을 할당의 짧은 (물론, 한 줄) 방법은 다음과 같습니다

myvar = mydict['m'] if 'm' in mydict else 'Melon' 

그러나이 작업을 수행하는 짧은 방법이 있습니까?

루비에서,이 같이 갈 것 : 그냥 궁금

myvar = mydict[:m] || 'Melon' 

. 미리 감사드립니다!

+0

http://docs.python.org/library/stdtypes.html를 참조하십시오'아마도 파이썬의'None'의 상당을 반환합니다. 그러면 파이썬 사전에'None'을 어떻게 저장합니까? –

+0

Ruby 버전은 똑같은 일을하지 않는 것으로 보입니다. 사전 조회가 "참"인 결과 (즉, if-test를 만족함)는 사전에 존재하는 값과 동일하지 않습니다. lookup은 값이 존재하지만 "false"('None','False', 빈리스트 등은 파이썬에서 false-ish 값이며 아마도 Ruby가 유사 할 것입니다) 인 경우 "false"가됩니다. –

+0

@Karl Knechter : 루비에서는'false'와'nil' 만 false입니다. 빈 배열 또는 문자열, 0 - 모두는 if 문에서 true를 반환합니다. (파이썬의'None''은 Ruby의'nil'과 같습니다.) – steenslag

답변

5

이 경우 (사전에서 항목을 가져 오는 경우), 바로 가기를 사용할 수 있습니다 - get 메서드는 기본값을 허용합니다.

myvar = mydict.get('m', 'Melon') 
+0

Ruby로 되돌아 가면'myvar = mydict.fetch ('m', 'Melon')' – steenslag

+0

오 이런 식으로하고 싶습니다! 정말 감사합니다! – Sacki

4

나는 if/else 버전에서 개선 될하기 위해 get() 방법의 사용을 고려할 것입니다.

myvar = mydict.get('m', 'melon') 
3

당신이 시도 할 수 :

myvar = mydict.get('m', 'melon') 

를 키 'm'을 찾을 수없는 경우 두 번째 매개 변수가 기본값입니다. [: m]

루비`mydict의에서

관련 문제