2015-09-03 6 views
3

J'essaie de convertir une instruction "if else" en python dans un dictionnaire.Comment gérer la clause "else" lors de la conversion d'une instruction "if..elif..else" en recherche dans un dictionnaire?

J'ai essayé de le convertir en un dictionnaire, mais comment puis-je gérer la dernière clause 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] 

J'ai créé ce code en remplacement:

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

est-il équivalent?

+0

Pourquoi essayez-vous d'éliminer if/else? –

+1

@ Thecheater887 peut être de réduire le nombre de lignes de codage – The6thSense

+0

@ Thecheater887 Voir [Pourquoi le « si » la déclaration du mal considéré?] (Http://stackoverflow.com/questions/1554180/why-is-the-if-statement -considered-evil) –

Répondre

0

Je pense que vous cherchez;

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

Mais une bonne chose à propos de 'dict.get' est que vous n'avez * pas * à effectuer ce genre de comparaison. – juanchopanza

+0

@juanchopanza Je comprends pourquoi j'ai eu la downvote maintenant .. Je ne l'avais pas fait auparavant parce qu'elle échoue quand je l'essaye dans mon interpréteur, ou dans cmd. –

+0

Intéressant. Lequel échoue? Aussi, quelle version de Python? – juanchopanza

8

Vous pouvez utiliser la méthode dict.get:

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

qui renverra "value not found" si val est pas une clé, sans affecter le dictionnaire.

Comme toujours, en cas de doute, utilisez l'aide:

>>> help(dict)