以优雅格式打印字典键的简洁方法

6 投票
4 回答
10415 浏览
提问于 2025-04-18 10:30

我想要把字典里的所有键(可能还有子键)以一种好看的方式输出。所以我写了以下代码:

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

4 个回答

0

其实你可以把你的列表和介绍的字符串连接在一起。试试这个:

print "The keys in my dictionary are: " + ','.join([k for k in mydict.keys()])

*不过这个方法只适用于没有嵌套的字典哦。

2

如果你想要代码写得简洁一些,可以试试 pprint 这个模块。

import pprint
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(data)

这里还有一些关于嵌套字典的其他解决方案: 在Python中美观地打印嵌套字典的方法?

2

我建议你在这里打印出来:

import json
json.dumps(dict, indent=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)

撰写回答