2010-10-20 8 views
1

J'ai eu ceci:Une autre compréhension de la liste question

if Setting["Language"] == "en": 
     f.m_radioBox3.SetSelection(0) 
    elif Setting["Language"] == "pt": 
     f.m_radioBox3.SetSelection(1) 
    elif Setting["Language"] == "fr": 
     f.m_radioBox3.SetSelection(2) 
    elif Setting["Language"] == "es": 
     f.m_radioBox3.SetSelection(3) 

Alors Je l'ai fait:

Linguas = ["en","pt","fr","es"] 
    a = 0 
    for i in Linguas: 
     if i == Setting["Language"]: 
      f.m_radioBox3.SetSelection(a) 
     a += 1 

Est-il possible de simplifier encore cela et en faire un one-liner?

+1

Oui pour simplifier, Non pour lister la compréhension – nearlymonolith

Répondre

3
Linguas = ["en","pt","fr","es"] 

if Setting["Language"] in Linguas: 
    f.m_radioBox3.SetSelection(Linguas.index(Setting["Language"])) 

ou vous pouvez le faire avec un dictionnaire:

Linguas = {"en":0,"pt":1,"fr":2,"es":3} 

if Setting["Language"] in Linguas: 
    f.m_radioBox3.SetSelection(Linguas[Setting["Language"]]) 
+0

Je ne connaissais pas le .index, merci. Cela fonctionne et maintient ma liste identique. – relima

+0

+ 1 index est la meilleure solution ici. L'utilisation d'un dictionnaire serait trop lourde. –

+0

Je voudrais créer le dictionnaire comme ceci: 'Linguas = dict ([(lang, i) pour i, lang en énumérer ([" en "," pt "," fr "," es "]))' – hughdbrown

3
mapping = {"en" : 0, "pt" : 1, "fr" : 2, "es" : 3} 
if Setting["Language"] in mapping: 
    f.m_radioBox3.SetSelection(mapping[Setting["Language"]]) 

Si vous n'avez pas besoin de vérifier le réglage étant l'un d'un nombre acceptable de valeurs, il devient:

mapping = {"en" : 0, "pt" : 1, "fr" : 2, "es" : 3} 
f.m_radioBox3.SetSelection(mapping[Setting["Language"]]) 
Questions connexes