2011-07-01 10 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"

編集:だから、私は価格を更新し、スクリプトがループしていると自動的に行われるであろう、30分ごとかそこらを達することができるようにする必要があります。ウェブサイトにはユーザー名、パスワード、価格、金額が必要です。ユーザー名とパスワードは決して変更されませんが、価格と金額は変わりません。とにかく私はそれらを継続的に更新できるのですか?

答えて

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

私はウェブサイトにPOSTしようとしていますが、ループが実行されている限り、30分ごとに価格と金額が変わるため、パラメータを変更して反映させる必要があります。私はそれを自動的に行う方法があるかどうか、あるいは30分ごとに手で行う必要があるかどうかを判断しようとしています。 – Ian

+0

@Ian - ちょうど参考になりましたように、私はあなたが新しいと思っています。あなたがあなたの質問についてより多くの情報を提供した場合、質問自体を編集し、「質問の編集を参照してください」などのコメントを残してください。これにより、すべてのレスポンダーが新しい情報を得ることができます(あなたにとってはより良いことです)。次に、あなたのコードで 'params'に値を代入していますが、' x''と 'y'の値だけをassingnしてから' params'に値を取り戻そうとします。ここには明らかに間違いがあります。達成しようとしていることを段階的に説明する質問を編集できますか? (=コードにコメントする)? – mac