http://www.learnpython.org/Serialization_using_JSON_and_pickle
手順は次のとおりです。
この演習の目的は、キーと値のペア "Me" : 800 が追加された JSON 文字列を出力することです。
以下は、変更する必要がある開始コードです。
#Exercise fix this function, so it adds the given name and salary pair to the json it returns
def add_employee(jsonSalaries, name, salary):
# Add your code here
return jsonSalaries
#Test code - shouldn't need to be modified
originalJsonSalaries = '{"Alfred" : 300, "Jane" : 301 }'
newJsonSalaries = add_employee(originalJsonSalaries, "Me", 800)
print(newJsonSalaries)
私は完全に迷っています。JSON のレッスンは、せいぜい短いものでした。私がここで実行しているように見える問題は、それorginalJsonSalaries
が文字列として定義されていることです(括弧のようなあらゆる種類の不要な記号を含みます。実際、その定義を囲む単一引用符が削除されたoriginalJsonSalaries
場合、辞書になり、これは次のようになりますはるかに簡単ですが、現状では、文字列に and を追加し、辞書のような書式設定を維持するにはどうすればよい"Me"
でしょ800
うか?
はい、私はコーディングに非常に慣れていません。私が知っている他の言語は tcl だけです。
編集:
OK、答えのおかげで、私は密集していることがわかったので、次のコードを書きました。
import json
#Exercise fix this function, so it adds the given name and salary pair to the json it returns
def add_employee(jsonSalaries, name, salary):
# Add your code here
jsonSalaries = json.loads(jsonSalaries)
jsonSalaries["Me"] = 800
return jsonSalaries
#Test code - shouldn't need to be modified
originalJsonSalaries = '{"Alfred" : 300, "Jane" : 301 }'
newJsonSalaries = add_employee(originalJsonSalaries, "Me", 800)
print(newJsonSalaries)
これは動作しません。何らかの理由で、元の辞書キーは Unicode としてフォーマットされているため (どこで発生したかはわかりません)、辞書を印刷すると "u" フラグが表示されます。
{u'Jane': 301, 'Me': 800, u'Alfred': 300}
dict.pop()
キー( )を置き換えるために使用しようとしましdict("Jane") = dict.pop(u"Jane")
たが、それだけで表示されますSyntaxError: can't assign to function call
私の元の解決策は間違っていますか、それともこれは迷惑なフォーマットの問題であり、その解決方法はありますか?