Еще один вопрос понимания списка - PullRequest
1 голос
/ 20 октября 2010

У меня было это:

    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

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

Ответы [ 2 ]

3 голосов
/ 20 октября 2010
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"]])
3 голосов
/ 20 октября 2010
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"]])
...