0

タイトルから json.loads を使用するだけでよいように聞こえると思います。しかし、ここではそうではないと思います。または、少なくともライブラリなしでこれを実行できるはずです(さらに、ライブラリメソッドで解決するだけでなく、これを理解したいと思います)。

私が現在持っているのは、キーが単語であり、値がそれらの単語の合計数である辞書です。

myDict = { "word1": 12, "word2": 18, "word3": 4, "word4": 45 }

等々...

私が望むのは、それが次のようなものになることです(それをscraperwikiデータストアに挿入できるようにするため):

myNewDict = {"entry": "word1", "count": 12, "entry": "word2", "count": 18, "entry": "word3", "count": 4, "entry": "word4", "count": 45}

ループしてmyDict、新しく選択したキー「エントリ」と「カウント」の後に各キー/値を挿入するだけでよいと考えました(そのように):

for k, v in myDict.iteritems():
    myNewDict = { "entry": k, "count": v }

しかし、これでmyNewDictは、最後の結果を保存するだけです(だから私に与えるだけですmyNewDict={"entry":"word4", "total":45}

ここで何が欠けていますか?

4

2 に答える 2

2

必要なのはリストです:

entries = []

for k, v in myDict.iteritems():
   entries.append({ "entry": k, "count": v })

または、リスト内包表記を使用するとさらに優れています。

entries = [{'entry': k, 'count': v} for k, v in myDict.iteritems()]

詳細にはmyDict、ループの各反復でオーバーライドし、毎回新しい辞書を作成していました。必要な場合は、次のようにキー/値を dict に追加できます。

myDict['key'] = ...

.. ただし、ループ内で使用すると、「キー」に関連付けられた以前の値が上書きされるため、リストが使用されます。同様に、次のように入力すると:

myNewDict = {"entry": "word1", "count": 12, "entry": "word2", "count": 18, "entry": "word3", "count": 4, "entry": "word4", "count": 45}

あなたは実際に得る{'count': 45, 'entry': 'word4'}

注:出力データの予想される形式はわかりませんが、JSONに関しては、辞書のリストは正しいはずです(JSONキーも一意であると思います)。

于 2013-04-01T20:19:13.050 に答える