以嵌套在字典中的字典中打印数据的方式很好吗?

时间:2015-03-12 00:36:08

标签: python

尝试在包含在defaultdict

中的字典的结构中显示数据
dictionary=defaultdic(dict)

实施例

defaultdict = {key1} : 
                  {subkey1}:
                      (val1,
                       val2,
                       val3)
                  {subkey2}:
                      (val4,
                       val5,
                       val6)
              {key2} : 
                  {subkey3}:
                      (val7, 
                       val8, 
                       val9),
                  {subkey4}:
                      (val10,
                       val11,
                       val12)

我试着做

for key in dictionary.iterkeys():
    print key # This will return me the key
    for items in dictionary[key]:
        print items # This will return me the subkey
        for values in dictionary[key][items]:
            print values #this return the values for each subkey)

问题是我只是打印出一份清单;当你有太多的物品和钥匙时,这几乎是不可能的。

如何正确打印这些复杂的结构,以一种不会让你睁开眼睛的方式呈现它们?我尝试使用pprint和json.dumps,但两者都没有让情况变得更好。理想情况下,我希望在我的示例中打印它,但我看不到一种简单的方法,不会通过复杂的字符串操作来格式化打印输出。

2 个答案:

答案 0 :(得分:6)

Python只有PrettyPrint模块用于此目的。请注意,默认设置不会很好地打印,但如果您先转换回常规字典,它会很好。

from pprint import pprint
pprint(dict(dictionary))

答案 1 :(得分:0)

使用缩进将其打印出来,以便您的眼睛可以直观地看到结构。

for key in dictionary.iterkeys():
    print key # This will return me the key
    for items in dictionary[key]:
        print("    %s" % items) # This will return me the subkey
        for values in dictionary[key][items]:
            print("        %s" % values) #this return the values for each subkey)

您也可以替换\t的空格字符来使用制表符;两者都会很好。如果Python抱怨对象无法格式化为String,您可能还必须使用repr(values)str(values)显式获取它们的字符串表示。