【问题标题】:Concise way to print dictionary keys in a nice format [duplicate]以一种不错的格式打印字典键的简洁方法[重复]
【发布时间】:2014-08-11 06:24:29
【问题描述】:

我想获得字典中所有键(可能还有子键)的良好输出。因此我写道:

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

【问题讨论】:

  • 有些键的值本身就是字典,所以我也想打印出来
  • 使用join怎么样?例如print "\n".join(mydict.keys())。这将有助于单个字典,但对子键没有帮助。
  • @pandita 你能提供一个这样的字典的例子吗?还请描述什么对您来说“好”。

标签: python dictionary


【解决方案1】:
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 命令执行此操作的方法吗?
【解决方案2】:

我建议把它打印在

import json
json.dumps(dict, indent=4)

【讨论】:

  • 这只有在字典中的所有对象都是 JSON 可序列化的情况下才有效,例如,没有 numpy 数组或 lambda 函数。
【解决方案3】:

如果您想要简洁的代码,请尝试pprint 模块。

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

这里还有一些嵌套字典的其他解决方案:pretty printing nested dictionaries in Python?

【讨论】:

    【解决方案4】:

    您实际上可以将您的列表与您的介绍字符串连接起来。试试这个:

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

    *这仅适用于非嵌套字典

    【讨论】:

      猜你喜欢
      • 2021-01-11
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-14
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      相关资源
      最近更新 更多