2017-10-13 106 views
1

我是Python的新手,所以我没有太多的经验,对不起,如果这是一个愚蠢的问题。在python中循环2个字典

我正在阅读一堆Json文件并将一些值存储到2个单独的字典中。我试图输出结果如下: ID,当前名称,初始名称 但我不知道如何通过单个for循环中的两个字典。我至今如下:

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

字典的名称是当前初始。然而,这个输出是重复ID,所以我有:(ID,[当前]),(ID,[初始])和格式化有一些随机unicode字符,所以我不知道如何去解决这个

任何帮助,将不胜感激!

这是全码:(我的Python 2.7.10 BTW)

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=",") 

每个在评论在最后一圈都独立工作的打印功能,我想这两个结合起来通过匹配第一个字段的输出在一个表中。我试图让输出与ID (称为名称)的表,目前,初步

+0

目前还不清楚是什么输出你期待。字典没有排序,所以压缩它们没有意义。 – jonrsharpe

+0

开始发布你的字典*当前和最初* – RomanPerekhrest

+0

@jonrsharpe他们从python 3.6开始;) – Y0da

回答

0

您可以使用一个字典来引用另外一个

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

我现在尝试这个,谢谢 – Omar

+0

这似乎工作但任何想法如何摆脱unicode格式输出?输出示例: 146783,bodewig,[u'damjan',u'damjan'] 有没有办法显示u''? 再次感谢 – Omar

+0

@Omar现在尝试 – galaxyan