2つの入れ子になったPython辞書を組み合わせようとしています。それぞれにはトップレベルに10個のキーがあり、10個のキーのそれぞれに2つのキーがあります: 'datetimes'と 'values'。低レベルでは、ネストされた辞書の各キーには約100,000項目があります。2つのpklファイルからPythonのネストされた辞書を作成する方法/ 2つのネストされた辞書を1つに結合するか?
2つの辞書の由来は、2つのpklファイルからのものです。私は負荷機能を使って2つの辞書にそれらをunpicklingしています。これらの2つのpklファイルから1つの辞書を持つ方法はありますか?そうでない場合は、2つの辞書をどのように組み合わせて1つにすることができますか?
私はthis solutionを試しましたが、別の辞書よりも上書きされてしまい、this solutionが辞書にあるように辞書を使用できませんでした。 .copy()を提案通りに使用すると、hereは1つの辞書を別の辞書に上書きします。 1つの辞書を別の辞書に追加するだけでも大丈夫ですが、this postは辞書がそのように機能しないことを示唆しているようです。
私はこれらの辞書から配列を作成し、それらを再形成して連結することができたかもしれないと考えました。しかし、それは信じられないほど遅いです。ここで私はこれまで持っているものです。
import cPickle
import numpy as np
def load(filename, verbose=False):
# Open file
if verbose : print("Loading %s" % filename)
pkl_file = open(filename, 'rb')
# Load from Pickle file.
data = cPickle.load(pkl_file)
pkl_file.close()
return data
def combineDicts(dictList):
result = np.array([])
for listItem in dictList:
data = np.array([])
for item in listItem.keys():
for innerItem in listItem[item].keys():
data = np.append(data, listItem[item][innerItem])
result = np.append(result, data)
だから私はこれらのコマンドを実行しようとしています:
>>> dict1 = load('file1.pkl', verbose = True)
>>> dict2 = load('file2.pkl', verbose = True)
>>> a = combineDicts([dict1, dict2])
sgallen、あなたはので、両方の辞書と同じ名前をrealltさtopkey1とtopkey3を与える例で同じ同一のトップキーを持つ。両者の違いは、実際には1年間のデータがあり、別のデータは別の年のデータです。あなたの例を次のように変更すると、 'dict1 = {'topkey1':{'datetimes':[9,8]、 'values':[7,6]}、 'topkey2':{'datetimes':[5 、 'values':[3,2]}} ' ' dict2 = {'topkey1':{'datetimes':[29,28]、 'values':[17,16]}、 'topkey2' : '' datetimes ':[35,34]、' values ':[43,42]}} – Aina
出力は '{' topkey1 ':{' datetimes ':[9,8,29,28 ]、[values]:[7,6,17,16]}、 'topkey2':{'datetimes':[5,4,35,34]、 'values':[3,2,43,42]} } '私はdictの理解が行く方法だと思うが、Pythonを使った私の5週間の経験は私をそこに得ることができない。私はあなたの解決策は、私が後に出てくる出力を反映するように理解していればうまくいくはずだと思います。ありがとう、アイナ。 – Aina