2015-09-03 4 views
3

Я пытаюсь преобразовать инструкцию if if в python в словарь.Как обрабатывать предложение «else» при преобразовании оператора «if..elif..else» в поиск словаря?

Я попытался преобразовать его в словарь, но как мне обрабатывать предложение else else?

val=3 

if val==1: 
    print "a" 
elif val==2: 
    print "b" 
elif val==3: 
    print "c" 
elif val==4: 
    print "d" 
else: 
    print "value not found:" 

print "===========Converted if else into dictionary ===================" 

DATA_SOURCE = {1:"a",2:"b",3:"c",4:"d"} 
print DATA_SOURCE[val] 

Я создал этот код в качестве замены:

if not DATA_SOURCE.has_key(val): 
    print "value not found:" 
else: 
    print DATA_SOURCE[val] 

ли это эквивалент?

+0

Почему именно вы пытаетесь устранить if/else? –

+1

@ Thecheater887 может заключаться в сокращении числа строк кодирования – The6thSense

+0

@ Thecheater887 См. [Почему утверждение «если» считается злым?] (Http://stackoverflow.com/questions/1554180/why-is-the-if-statement -considered-evil) –

ответ

0

Я думаю, что вы ищете;

val = 3 
dct = {1:"a", 2:"b", 3:"c", 4:"d"} 
if dct.get(val) == None: print "Value Not Found" 
+1

Но приятная вещь о 'dict.get' заключается в том, что вы * не * должны выполнять такое сравнение. – juanchopanza

+0

@juanchopanza Я понимаю, почему я получил downvote сейчас .. Я не сделал этого раньше, потому что он терпит неудачу, когда я пытаюсь это сделать в моем интерпретаторе или в cmd. –

+0

Интересно. Какой из них не удается? Кроме того, какая версия python? – juanchopanza

8

Вы можете использовать dict.get метод:

print DATA_SOURCE.get(val, "value not found") 

Это будет возвращать "value not found" если val не является ключевым, не влияя на словарь.

Как всегда, если есть сомнения, использовать помощь:

>>> help(dict) 
Смежные вопросы