2011-07-01 189 views
2

我試圖讓我的字典不斷更新,只要循環正在運行,並根據需要更改x和y值。這是我在得到錯誤消息並來到這裏之前最初嘗試的方式。在Python中更新字典

params = urllib.urlencode({'name':'xxxxx', 'pass':'xxxxxxx', 'amount':'x', 'price':'y'}) 
x = math.floor(first) 
y = last*1.007-last*.003 
params['amount'] = x 
params['price'] = y` 
sell = urllib.urlopen("https://sellyourstuffwhatever.com", params) 

我不太瞭解Python,所以我確信有一種方法可以做到這一點。然而,目前的方法給了我這個錯誤。

"TypeError: 'str' object does not support item assignment"

編輯:所以我需要能夠更新我的價格和每三十分鐘左右,因爲腳本是循環這將是自動完成的數量。該網站需要我的用戶名,密碼,價格和金額。用戶名和密碼永遠不會改變,但價格和金額。那麼無論如何,我可以不斷更新它們?

回答

4

urllib.urlencode[docs]返回一個字符串,而不是字典。你必須在循環之後調用它。

喜歡的東西:

params = {'name':'xxxxx', 'pass':'xxxxxxx'} 

for .....: 
    params['amount'] = math.floor(first) 
    params['price'] = last*1.007-last*.003 

params = urllib.urlencode(params) 

更妙的是,如果您的編碼字符串使用不同的變量名。


如果你還不太瞭解Python,have a look at some tutorial

+0

我一直在多個教程網站,它只是沒有找出這一個後,我來到這裏。無論如何,我試着在循環之後調用它,並且我得到了同樣的錯誤。 :O – Ian

+0

@Ian:你還有什麼要做「params」嗎?在創建字符串之後,您不能以這種方式分配或讀取任何值。你必須發佈更多的代碼。 –

1

urllib.urlencode返回一個字符串。由於字符串是不可變的對象,你不能爲它的一部分分配一個值,因此錯誤。

無論如何:從你的代碼看來,你會認爲param是一個字典。也許你應該澄清你的問題多一點...

+0

我試圖發佈到一個網站,只要我的循環運行,但是,每隔30分鐘左右價格和金額會改變,所以我必須改變參數來反映這一點。我試圖弄清楚是否有辦法自動做到這一點,或者如果我必須每30分鐘手動一次。 – Ian

+0

@Ian - 僅供參考,因爲我看到你是新人:如果你提供了關於你的問題的更多信息,是一個很好的實踐來編輯問題本身,並留下評論,如「看問題編輯」等。這使得所有響應者都能獲得新的信息(這對你更好!)。然後:在你的代碼中,你爲'params'分配了一些值,你不使用它(因爲你只需要將值賦給'x'和'y',然後嘗試重新賦值給'params')。這裏顯然有一個錯誤。你可以編輯你的問題,逐步解釋你想要達到的目標嗎? (=評論代碼)? – mac