如何在Python中很好地打印出一本字典?

时间:2017-06-22 03:17:17

标签: python

我刚开始学习python而且我正在构建一个文本游戏。我想要一个库存系统,但我似乎无法打印出字典而不看起来很难看。 这就是我到目前为止所做的:

def inventory():
    for numberofitems in len(inventory_content.keys()):
        inventory_things = list(inventory_content.keys())
        inventory_amounts = list(inventory_content.values())
        print(inventory_things[numberofitems])

谢谢!

7 个答案:

答案 0 :(得分:18)

我喜欢Python中包含的pprint模块。它可以用来打印对象,或者格式化它的一个很好的字符串版本。

import pprint

# Prints the nicely formatted dictionary
pprint.pprint(dictionary)

# Sets 'pretty_dict_str' to 
pretty_dict_str = pprint.pformat(dictionary)

但这听起来像是在打印一个库存,用户可能希望将其显示为更像以下内容:

def print_inventory(dct):
    print("Items held:")
    for item, amount in dct.iteritems():
        print("{} ({})".format(item, amount))

inventory = {
    "shovels": 3,
    "sticks": 2,
    "dogs": 1,
}

print_inventory(inventory)

打印:

Items held:
shovels (3)
sticks (2)
dogs (1)

答案 1 :(得分:13)

我最喜欢的方式:

function getUserData()
{
    $userarray = array();
    $userarray['username'] = $_SESSION['username'];
    $userarray['user_id'] = $_SESSION['user_id'];
    $userarray['email'] = $_SESSION['email'];
    $userarray['level'] = $_SESSION['level'];
    return $userarray;
}

答案 2 :(得分:4)

这是我使用的单线程。 (编辑:适用于那些不可JSON序列化的东西)

print("\n".join("{}\t{}".format(k, v) for k, v in dictionary.items()))

说明:这将遍历字典的键和值,为每个字符串创建格式化的字符串,如键+标签+值。 "\n".join(...在所有字符串之间添加换行符,形成一个新字符串。

示例:

>>> dictionary = {1: 2, 4: 5, "foo": "bar"}
>>> print("\n".join("{}\t{}".format(k, v) for k, v in dictionary.items()))
1   2
4   5
foo bar
>>>

答案 3 :(得分:0)

同意,“很好”是非常主观的。看看这是否有帮助,我一直用它来调试dict

    for i in inventory_things.keys():
        logger.info('Key_Name:"{kn}", Key_Value:"{kv}"'.format(kn=i, kv=inventory_things[i]))

答案 4 :(得分:0)

我写了这个函数来打印简单的字典:

def dictToString(dict):
  return str(dict).replace(', ','\r\n').replace("u'","").replace("'","")[1:-1]

答案 5 :(得分:0)

我建议使用beeprint而不是pprint。

示例:

pprint

{'entities': {'hashtags': [],
              'urls': [{'display_url': 'github.com/panyanyany/beeprint',
                        'indices': [107, 126],
                        'url': 'https://github.com/panyanyany/beeprint'}],
              'user_mentions': []}}

蜂印

{
  'entities': {
    'hashtags': [],
    'urls': [
      {
        'display_url': 'github.com/panyanyany/beeprint',
        'indices': [107, 126],
        'url': 'https://github.com/panyanyany/beeprint'}],
      },
    ],
    'user_mentions': [],
  },
}

与py2 py3 兼容

答案 6 :(得分:0)

Yaml通常更具可读性,尤其是当您具有复杂的嵌套对象,层次结构,嵌套字典等时:

首先请确保您有pyyaml模块:

pip install pyyaml

然后

import yaml
print(yaml.dump(my_dict))