代码之家  ›  专栏  ›  技术社区  ›  Maryg

在python3中打印嵌套字典

  •  1
  • Maryg  · 技术社区  · 6 年前

    如何以特定格式打印嵌套python字典? 我的字典是这样的:

    dictionary = {'Doc1':{word1: 3, word2: 1}, 'Doc2':{word1: 1, word2: 14, word3: 3}, 'Doc3':{word1: 2}}
    

    我尝试了以下方法:

    for x, y in dictionary.items():
       print(x,":", y)
    

    但它会打印出来`

    Doc1: {word1:3, word2: 1}
    Doc2: {word1:1, word2:14, word3:3}
    Doc3: {word1:2}
    

    如何去掉括号并打印普通信息?

    希望 按以下格式打印:

    Doc1: word1:3; word2:1
    Doc2: word1:1; word2:14; word3: 3
    Doc3: word1:2;
    

    :

    2 回复  |  直到 6 年前
        1
  •  3
  •   alexanderlz    6 年前

    在您的情况下,“y”是一个dict,因此如果您想以不同的方式打印它,可以重写 repr (对象的表示)或dict。 或者,您可以在这里使用一些递归

    def print_d(dd):
        if type(dd) != dict:
            return str(dd)
        else:
            res = []
            for x,y in dd.items():
                res.append(''.join((str(x),':',print_d(y))))
            return '; '.join(res)
    
    if __name__=='__main__':
        dictionary = {'Doc1':{'word1': 3, 'word2': 1}, 'Doc2':{'word1': 1, 'word2': 14, 'word3': 3}, 'Doc3':{'word1': 2}}
    
        for x, y in dictionary.items():
             print(x,": ", print_d(y))
    
        2
  •  1
  •   JacobIRR    6 年前

    除了原始词典声明不是有效的python之外,除非每个单词都是定义的变量,这似乎是可行的:

    import json
    print(json.dumps(dictionary).replace("{","").replace(',','').replace("}","\n").replace('"',''))
    

    结果:

    Doc1: word1: 3 word2: 1
    Doc2: word1: 1 word2: 14 word3: 3
    Doc3: word1: 2