Python 3では、以前に保存したjsonを次のようにロードします。
json.dumps(dictionary)
出力は次のようなものです
{"('Hello',)": 6, "('Hi',)": 5}
私が使うとき
json.loads({"('Hello',)": 6, "('Hi',)": 5})
それは機能しません、これは起こります:
TypeError:JSONオブジェクトは 'dict'ではなくstr、bytesまたはbytearrayでなければなりません
json.loads
は入力として文字列を取り、出力として辞書を返します。
json.dumps
は入力として辞書を受け取り、出力として文字列を返します。
json.loads({"('Hello',)": 6, "('Hi',)": 5})
を使用すると、
辞書を入力としてjson.loads
を呼び出しています。
次のように修正できます(それが何の意味なのかよくわかりませんが)。
d1 = {"('Hello',)": 6, "('Hi',)": 5}
s1 = json.dumps(d1)
d2 = json.loads(s1)
文字列が必要な関数に辞書を渡します。
この構文:
{"('Hello',)": 6, "('Hi',)": 5}
有効なPython辞書リテラルと有効なJSONオブジェクトリテラルの両方です。ただし、loads
は辞書を取りません。文字列を取得し、JSONとして解釈して結果を返しますas辞書(またはJSONに応じて文字列または配列または数値ですが、通常は辞書)。
この文字列をloads
に渡すと:
'''{"('Hello',)": 6, "('Hi',)": 5}'''
次に、渡そうとしている辞書によく似た辞書を返します。
JSONオブジェクトリテラルとPython辞書リテラルの類似性を活用するには、次のようにします。
json.loads(str({"('Hello',)": 6, "('Hi',)": 5}))
しかし、どちらの場合でも、渡された辞書を取得するだけなので、それが何を達成するかはわかりません。あなたの目標は何ですか?