2014-01-12 55 views
0
import requests 
import json 

def decrementList(words): 
    for w in [words] + [words[:-x] for x in range(1,len(words))]: 
     url = 'http://ws.spotify.com/search/1/track.json?q=' 
     request = requests.get(url + "%20".join(w)) 

     json_dict = json.loads(request.content) 
     track_title = ' '.join(w) 

     for track in json_dict["tracks"]: 
      if track["name"].lower() == track_title.lower() and track['href']: 
       return "http://open.spotify.com/track/" + track["href"][14:], words[len(w):], track["href"][14:] 

    return "Sorry, no more track matches found!", None 

if __name__ == "__main__": 
    message = "baby asdf".split() 
    size = len(message) 

    while message: 
     href, new_list, for_playlist = decrementList(message) 
     message = new_list 

     #print href 

     playlist = [] 
     playlist.append(for_playlist) 
     print playlist 

在上面的代码中,print playlist返回两个单独的列表。我意识到这是因为列表追加发生在一个while循环内而发生的。我怎样才能使这两个追加到同一个空列表,而不是两个单独的列表?列表追加返回两个不同的列表

+0

尝试'.extend()的''而不是.append()' - 但你可能不希望每次通过循环将'playlist'设置为一个空列表 –

+0

我试过了,我再试一次,它返回这个'[u'4',u'k',u'd',u'Y' ,u'l',u'V',u'x',u'g',u'8',u'P',u'd',u'i',u'V',u'L' ,u'z',u'X',u'D',u'G',u'Y',u'g',u'e',u'T'] [u'4',u' Q',u'E',u'k',u' W',u'r',u'P',u'h',u's',u'y',u'l',u'z',u'l',u'L',u't' ,u't',u'5',u'd',u'r',u'4',u'K',u't']' – metersk

+0

我怎样才能让播放列表每次都是空的? – metersk

回答

2

使列表的声明打印while loop

playlist = [] 
while message: 
    #.... 
print playlist 
2

那是因为你调用append()之前重新分配的名称playlist空列表:

playlist = [] 

如果您在while循环之前所说的那样,你应该得到预期的结果。

playlist = [] 
while message: