2014-01-12 89 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: