2012-06-14 94 views
0

假設「mylist」可以包含值「視頻」,「音頻」,「視覺」或全部三種。如果在「mylist」中找到該字符串,我希望我的腳本將匹配的數據追加到列表「files」,如果「mylist」中只有一個字符串,則該工作方式有效,但如果有多個字符串,則只有第一個字符串在「mylist」中獲得匹配。有什麼我可以使用,而不是「elif」,相當於「如果」?Python「如果」等效

if request.method == 'POST': 
    mylist = request.POST.getlist('list') 
    files = [] 
    if 'video' in mylist: 
     files.append('/home/dbs/public_html/download/codex/codex.html') 
    elif 'audio' in mylist: 
     files.append('/home/dbs/public_html/download/audio/audio_player.html') 
    elif 'visual' in mylist: 
     files.append('/home/dbs/public_html/download/visual/visual.html') 
    return HttpResponse(files) 
    else: 
    return http.HttpResponseForbidden() 
+3

...三個'if'語句? – SomeKittens

回答

10

只需使用if而不是elif

if 'video' in mylist: 
    files.append('/home/dbs/public_html/download/codex/codex.html') 
if 'audio' in mylist: 
    files.append('/home/dbs/public_html/download/audio/audio_player.html') 
if 'visual' in mylist: 
    files.append('/home/dbs/public_html/download/visual/visual.html') 

你也可以使用一個映射對象和循環的情況下,有超過了幾項這將是更好的,因爲你不必重複`... in mylist代碼:

paths = { 
    'video': '/home/dbs/public_html/download/codex/codex.html', 
    'audio': '/home/dbs/public_html/download/audio/audio_player.html', 
    'visual': '/home/dbs/public_html/download/visual/visual.html' 
} 

files += [path for key, path in paths.iteritems() if key in mylist] 
+0

擊敗我25秒。 –

+0

哇,這很容易。將標記爲正確:) – user1457212

+0

@ngmiceli這就是爲什麼他是盜賊大師:) –

5

爲什麼不只是如果?你想要每個案例如果它發生。每個條款之間沒有關係。 :)