2017-10-13 17 views
1

私はPythonには新しく、経験はあまりありません。申し訳ありませんが、これはばかげた質問です。Pythonで2つの辞書をループする

私は数多くのJsonファイルを読み込み、いくつかの値を2つの別々の辞書に保存しています。 ID、現在の名前、当初の名前 しかし、私はどのように1つのforループで両方のディクショナリを通過するかわかりません。私はこれまで、次のされています

for dev, dev2 in zip(current.items(), initial.items()): 
    print(dev, dev2, sep=",") 

辞書の名前は現在初期です。しかし、この出力はIDを繰り返すので、私は:(ID、[現在])、(ID、[初期])、フォーマットはいくつかのランダムなユニコード文字を持っているので、私はこの周りに行く方法がわからない

ご協力いただければ幸いです!

これは完全なコードは次のとおりです。

from __future__ import print_function 
import json 
import os 

import io 
import shutil 

current = {} 
initial = {} 

for file in os.listdir('.'): 
    if not ".json" in file: 
     continue 

    data = io.open(file, 'r', encoding="utf8") 

    commit = json.load(data) 

    for branch in commit["branches"]: 
     for change in branch["methodChanges"]: 
      method_name = change["methodProperties"]["name"] 
      change_type = change["methodChangeProperties"]["changeOperation"] 

      if method_name in current: 
       current[method_name].append(commit["committer"]) 
      else: 
       current[method_name] = [commit["committer"]] 


      if change_type == "ADDED": 
       initial[method_name] = commit["committer"] 


print("Method","Current Developer","Initial Developer", sep=",") 

#for dev in current: 
    #print(dev, current[dev], sep=",") 
#for dev2 in initial: 
    #print(dev2, initial[dev2], sep=",") 

for dev, dev2 in zip(current.items(), initial.items()): 
    print(dev, dev2, sep=",") 

最後のループのためにコメントを別々に動作しないで印刷機能のそれぞれが、私は両方を兼ね備えしようとしている(私はところでPythonの2.7.10を持っています)最初のフィールドに一致させることによって1つのテーブルに出力します。私が取得しようとしている出力は(名前と呼ばれる)ID とテーブルです、現在、初期

+0

を参照するために1つの辞書を使用することができます期待している。辞書は注文されないので、それらを圧縮することはほとんど意味がありません。 – jonrsharpe

+0

あなたの辞書をポストすることから始める*現在と初期* – RomanPerekhrest

+0

@jonrsharpe彼らはPython 3.6から始まっています;) – Y0da

答えて

0

あなたはそれはあなたがしているものの出力は不明だ別の1

for k, v in initial,items(): 
    from_other_dict = current.get(k,'') 
    print(k, v, ','.join(from_other_dict), sep=",") 
+0

私は今これを試しています。 – Omar

+0

これはうまくいくようですが、どのようにしてユニコード形式の出力を取り除くことができますか?出力例: 146783、bodewig、[u'damjan '、u'damjan'] ここに表示されないで表示する方法はありますか? ありがとうございました – Omar

+0

@Omar今すぐ試してください – galaxyan

関連する問題