2011-05-16 3 views
4

Veuillez excuser (ou améliorer le titre) mais j'ai un petit problème stupide qui me rend très incertain.Python: Choisissez une autre valeur

J'ai une liste qui peut contenir une à deux valeurs, jamais plus, jamais moins et que ces deux options:

options = ['option one', 'option two'] 

Comme je le dis, parfois il ne peut être l'une de ces valeurs dans la liste donc il pourrait être juste ['option two',]

La portée de ceci est la navigation simple sur un site Web. J'accepte une entrée querystring et recherche dans la liste de ces options:

current_option = request.GET.get('option', options[0]) 
if not current_option in options: current_option = options[0] 

Si aucune « option » est fourni, il est par défaut à la première option disponible.

Mais maintenant Je veux savoir ce que l'autre option est. Si "option one" est l'entrée, je veux "option two". Et s'il n'y a que "option one" dans la liste options, par exemple, je veux que le retour soit False.

Je sais que je peux parcourir la liste mais il me semble qu'il devrait y avoir une meilleure façon de choisir l'autre valeur.

Répondre

10
options.remove(current_option) 
options.append(False) 
return options[0] 

Modifier: Si vous ne voulez pas modifier options, vous pouvez également utiliser le un peu moins lisible

return (options + [False])[current_option == options[0]] 
+0

+1: Encore mieux que ce que j'avais prévu :) –

+1

Une bien meilleure réponse que la mienne. : P –

+0

La deuxième approche est belle. – Oli

2
current_option = request.GET.get('option', options[0]) 
if not current_option in options: 
    current_option = options[0] 
else: 
    oindex = options.index(current_option) 
    other_option = False if len(options) != 2 else options[(oindex+1) % 2] 
Questions connexes