2016-03-26 19 views
1

Aranan tweet'leri güncelleyecek bir listeye sahip olduğum bir Tweepy/Django/nltk projesi yapıyorum. Burada sorun yaşıyorum parçası: temeldePython listesi bir döngü içinde doğru olarak eklenmiyor

query = 'happy' 
max_tweets=5 
search_results = {} 
sentiments = {} 
sentilist = [] 
for status in tweepy.Cursor(api.search, q=query).items(max_tweets): 
    search_results[status.text] = unicode(status.text) 
    search_results[status.text] = search_results[status.text].replace('|', ' ') 
    search_results[status.text] = search_results[status.text].replace('\n', ' ') 
    print(senti.linearsvc10(status.text)) 
    sentiments['tweet'] = unicode(search_results[status.text]) 
    sentiments['sentiment'] = senti.linearsvc10(unicode(status.text)) 
    sentilist.append(sentiments) 
    print('inloop sentiments') 
    print sentiments 
    print('inloop sentilist') 
    print sentilist 

print('sentiments') 
print sentiments 
print('sentilist')  
print sentilist 

, duyguların döngünün Her geçiş için Yani

{'tweet': 'Actual tweet here', 'sentiment': 'pos'} 

için eşit olacaktır, o yüzden duyguları listeye eklemek istediğiniz Sonunda listede 5 farklı nesne olacak. Fakat asıl olan şey, her bir appendil için, her bir öğe için listedeki her bir öğeyi, eklenen son nesneye değiştirir. Örnek, şu bireysel duygular nesneler olacaktır:

{'tweet': 'tweet1', 'sentiment': 'pos'} 
{'tweet': 'tweet2', 'sentiment': 'neg'} 
{'tweet': 'tweet3', 'sentiment': 'neg'} 
{'tweet': 'tweet4', 'sentiment': 'pos'} 
{'tweet': 'tweet5', 'sentiment': 'neg'} 

olmalıdır sentilist eklemeden:

ama bunun yerine dönüşür: benim kodlarının

[{'tweet': 'tweet5', 'sentiment': 'neg'}, 
{'tweet': 'tweet5', 'sentiment': 'neg'}, 
{'tweet': 'tweet5', 'sentiment': 'neg'}, 
{'tweet': 'tweet5', 'sentiment': 'neg'}, 
{'tweet': 'tweet5', 'sentiment': 'neg'}] 

Diğer parçalar çalışıyor ve Bunun için basit bir çözüm var gibi hissediyorum ama yine de anlayamıyorum.

cevap

1

Her döngüde Yeni sözlük sentiments yapmak gerekir:

for status in tweepy.Cursor(api.search, q=query).items(max_tweets): 
    sentiments = {} 

Tekrar tekrar aynı sözlükte değerleri geçersiz ve her döngüde bu aynı sözlüğü ekleyin. Bu nedenle, son sözlük güncelleştirmeniz için sentilist listesindeki tüm girdilerdeki değerleri görürsünüz.

+0

Bu çalışma, cevap ve açıklama için teşekkürler! – user4215649