2016-10-17 7 views
0

私のpythonデータ処理で3つの辞書に基づいて新しい辞書を作成しようとしています。同様のキーを持つ辞書の文字列を組み合わせる

私は3つの辞書を持っていますが、それぞれがドキュメントの異なるセクションを表す類似のIDを持っています。

dict1 = {'001': 'Dog', '002': 'Cat', '003': 'Mouse'} 
dict2 = {'001': 'Dog2', '002': 'Cat2', '003': 'Mouse2'} 
dict3 = {'001': 'Dog3', '002': 'Cat3', '003': 'Mouse3'} 

例えば

私はので、私の願望出力はこれに類似したいと思い、同様のキーのすべての値を結合したかったです。

combineDict = {'001' : 'Dog Dog2 Dog3', '002' : 'Cat Cat2 Cat3', '003' : 'Mouse Mouse2 Mouse3'} 

大量のテキストを扱うとき、私はこの

combineDict = {} 
for k in dict1.keys(): 
    combineDict[k] = dict1[k] + " " + dict2[k] + " " + dict3[k] 

しかし、上記の方法は、超遅いんでした。

この機能を専門的に作成して同じ結果を得て、処理に要する時間を短縮しましたか?

はどうもありがとうございました:)

+0

3つの辞書は常に同じ長さになりますか?または、長さが異なることができますか? – idjaw

+0

同じ長さで、まったく同じキーを持っています –

+0

常に3つのdictsですか?または任意の辞書? – idjaw

答えて

1

あなたの現在のアプローチに沿って維持し、具体的には、あなたは常に3つの均等の長さの辞書を持っているという事実に、以下のソリューションを結合するために、アプローチのようなある:

辞書の1つを使用して反復し、値をスペースで区切った文字列として保持する新しい辞書を作成します。これを行う最も簡単な方法は、あなたのスペースで区切られたリストを与えるであろう、" ".joinを使用し、その後listでそれらを収集することです:

dict1 = {'001': 'Dog', '002': 'Cat', '003': 'Mouse'} 
dict2 = {'001': 'Dog2', '002': 'Cat2', '003': 'Mouse2'} 
dict3 = {'001': 'Dog3', '002': 'Cat3', '003': 'Mouse3'} 


new_dict = {} 

for key in dict1: 
    new_dict[key] = " ".join([dict1[key], dict2[key], dict3[key]]) 

出力:

{'001': 'Dog Dog2 Dog3', '003': 'Mouse Mouse2 Mouse3', '002': 'Cat Cat2 Cat3'} 

それとも単に辞書理解のように:

res = {k: " ".join([dict1[key], dict2[key], dict3[key]]) for k in dict1} 
+1

ありがとう –

関連する問題