以简洁的方式漂亮地打印字典键

6

我希望能够得到一个完整的字典键(包括子键)输出。因此,我写了下面的代码:

print("The keys in this dictionary are:\n")
for k in mydict.keys():
    print(k)

这种方法可以工作,但是否有更简洁的方式呢?我尝试使用列表推导式,但当然返回的是一个列表,无法与我的引入字符串拼接。有没有更多功能性的方法可用?

编辑: 字典可能是这样的:

mydict = {'key1':'value1',
          'key2':{'subkey1':'subvalue1','subkey2':'subvalue2'}}

我对“良好格式”的含义持开放态度。然而,也许可以这样表述:

key1
key2: subkey1, subkey2

一些键的值本身就是字典,因此我也想将它们打印出来。 - pandita
join怎么样?例如print "\n".join(mydict.keys())。这可以处理单个字典但不包括子键。 - mdml
4
@pandita,你能否提供一个这样的词典的例子?请描述一下对你而言什么是“好”的。 - user1907906
4个回答

5
def dump_keys(d, lvl=0):
    for k, v in d.iteritems():
        print '%s%s' % (lvl * ' ', k)
        if type(v) == dict:
            dump_keys(v, lvl+1)

mydict = {'key1':'value1',
          'key2':{'subkey1':'subvalue1',
                  'subkey2':'subvalue2',
                  'subkey3': {'subsubkey1' : 'subsubkeyval1'}}}

dump_keys(mydict)

不错!你知道有没有一种直接使用pprint命令来完成这个的方法吗? - Zorglub29

2

2
我建议将其打印出来。
import json
json.dumps(dict, indent=4)

只有当字典中的所有对象都是JSON可序列化的,即没有NumPy数组或Lambda函数等,此方法才能正常工作。 - Aratz

0
你实际上可以将你的列表与介绍字符串连接起来。试试这个:
print "The keys in my dictionary are: " + ','.join([k for k in mydict.keys()])

*这仅适用于非嵌套字典


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接