【问题标题】:Print nested dictionary in python3在python3中打印嵌套字典
【发布时间】:2018-09-12 04:25:31
【问题描述】:

如何以特定格式打印嵌套的 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)

但它会打印L`

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;

【问题讨论】:

    标签: python-3.x dictionary nested format


    【解决方案1】:

    在你的情况下'y'是一个字典,所以如果你想以不同的方式打印它,你可以覆盖repr(对象的表示)或字典。 或者你可以在这里使用一些递归

    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))
    

    【讨论】:

    • 非常感谢@alexanderlz。这非常有效!
    【解决方案2】:

    除了你的原始字典声明不是有效的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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多