2016-07-21 8 views
0

私は、複数の辞書を含む非常に大きな(> 10GB)JSONファイルを持っています。非常に大きなファイル内の辞書を効率的に検索する方法はありますか?

今、他の辞書のリストがあります。

リストにある辞書の2つのキーの値と一致し、最終的にそのような辞書から3番目のキーの値を抽出する、このファイルの辞書を検索したいとします。これをどうやってやりますか?

現在、これは私が考えているものです。

def parse(file): 
    for l in file: 
     yield eval(l) 

# list_of_dicts is the list containing the dictionaries 

for i in range(0,len(list_of_dicts)): 
    generator_of_dicts = parse("huge_file.json") 
    for j in generator_of_dicts: 
     if j[key1] == list_of_dicts[i][key1] \ 
     and j[key2] == list_of_dicts[i][key2]: 
      print j[key3] 
      break 

は、これを行うのより良い方法はありますか?

+2

あなたは*実際の*データベースを使用する必要があるように私に聞こえます。 –

答えて

0

おそらくPython用のjqバインディングを使用します。https://pypi.python.org/pypi/jq これはJSONに対してクエリを実行するのに適したツールです。

それ以外の場合は、PythonのJSONライブラリが良好です。

しかし、10Gbはたくさんあります。もしあなたがRAMを持っていなければ、私が必要とするストリーミングはjqに非常に便利です。

関連する問題