2017-06-09 19 views
1
[ 
    { 
     u"_id": ID('1234'), 
     u"attributes": {u"FN": u"John", u"LN": u"De"}, 
     u"refs": { 
      u"entries": { 
       u"id": [u"aa1", u"3da", u"42q"], 
       u"type": u"Info" 
      } 
     } 
    }, 
    { 
     u"_id": ID('1278'), 
     u"attributes": {u"FN": u"Trey", u"LN": u"Mullens"}, 
     u"refs": { 
      u"entries": { 
       u"id": [u"aa1", u"3d4", u"42q"], 
       u"type": u"Info" 
      } 
     } 
    } 
] 

上記のdictsのリストから、ID 1234と1278の2つのレコードからのエントリの各エントリ、つまりエントリの数を見つける関数を作成したいと思います。ディクテーションを解析するための問題。 Mongoからデータを引き出します。私が現在しようとしているのは、上記のデータを受け入れる関数を作成することです。これはmongo DBのコレクションであり、2番目の引数は到達する場所、つまりrefs.entriesです。私はmongoのfind関数を使ってデータを解析しています。どんなサポートも高く評価されます。以下はコードです -JSONを正しく読み込んで解析する

def fun(data, tar): 
    result = {} 

    i, j = tar.split('.') 
    for item1 in data.find({},{'_id':0, tar:1}): 

      for item in item1[i][j].strip("[]").split(','): 
       item = item.strip() 
       if item in result: 
        result[item] += 1 
       else: 
        result[item] = 1 
    return result 
+0

これは有効なJSONではありません。 'ID( '1234')とは何ですか?あなたはちょうど辞書を意味しましたか? – RPGillespie

+0

これはPythonの辞書であり、jsonではありません – Izkata

+0

ごめんなさい@RPGillespie。私はdictを意味する。私はその質問を編集した。 – ComplexData

答えて

0

データはdictsのリストであり、JSONや他の方法でJSONに変換する必要があります。

import json 

dict_obj = [{'a': 'b', 'c': 'd', 'e': {'1': 2}}, {1: 2, 2: 3}] 
# encode to a JSON formatted str 
encoded = json.dumps(r) 

# encode to JSON formatted steam to file 
with open(filename, 'w') as f: 
    json.dump(f, dict_obj) 

また、IDクラスオブジェクトではJSONシリアライザブルが必要です。そうしないと、ダンプによってエラーが発生します。あなたのIDクラスがJSONシリアライズ可能でない場合は、まずhereのようにIDクラスJSONをシリアライズ可能にする必要があります。

+0

混乱のために@amrxを申し訳ありません。そのpython dict、ないJSONと私はMongoからデータを引っ張っている。 – ComplexData

+0

編集した質問をご覧ください。あなたのサポートは高く評価されます。 – ComplexData

+0

@Dreamer、回答が変わった投稿を編集します。 IDクラスをJSONシリアライズ可能にして、答えに記載されているようにします。 JSONシリアライズ可能なIDクラスがなければ、これを行うことはできません。 – amrx

関連する問題