Python"和if"等效

0 python if-statement

假设"mylist"可以包含值"video","audio","visual"或全部三个.我希望我的脚本将匹配的数据附加到列表"files",如果在"mylist"中找到该字符串,如果"mylist"中只有一个字符串,则此方法有效,但如果有多个字符串,则只有第一个字符串在"mylist"中匹配.有什么我可以使用而不是"elif"相当于"和如果"?

 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()
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 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')
Run Code Online (Sandbox Code Playgroud)

你也可以使用一个映射对象和一个循环,如果有多个项目会更好,因为你不必重复`... 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]
Run Code Online (Sandbox Code Playgroud)


Nic*_*ick 5

为什么不呢?你想每一种情况下,如果它发生.每个条款之间没有关系.:)