2010-10-20 4 views
1

Я это:Еще один список понимание вопроса

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) 

Тогда я сделал это:

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

Можно еще больше упростить это и превратить его в однострочника?

+1

Да, чтобы упростить, нет, чтобы перечислить понимание – nearlymonolith

ответ

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

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

или вы могли бы сделать это с помощью словаря:

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

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

Я не знал о .index, спасибо. Он работает и сохраняет мой список одинаковым. – relima

+0

+1 индекс - лучшее решение здесь. Использование словаря будет излишним. –

+0

Я бы создал словарь следующим образом: 'Linguas = dict ([(lang, i) для i, lang в enumerate ([" 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"]]) 

Если вам не нужно проверить настройки будучи один из приемлемого числа значений, оно становится:

mapping = {"en" : 0, "pt" : 1, "fr" : 2, "es" : 3} 
f.m_radioBox3.SetSelection(mapping[Setting["Language"]]) 
Смежные вопросы