Как хорошо распечатать словарь в 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])
Спасибо!
Ответы
Ответ 1
Мне нравится модуль pprint
, включенный в Python. Его можно использовать для печати объекта или для его форматирования.
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)
Ответ 2
Мой любимый способ:
import json
print(json.dumps(dictionary, indent=4, sort_keys=True))
Ответ 3
Вот один вкладыш я бы использовал. (Изменение: работает для вещей, которые не являются 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
>>>
Ответ 4
Согласитесь, "красиво" очень субъективно. Посмотрите, поможет ли это, что я использовал для отладки dict
for i in inventory_things.keys():
logger.info('Key_Name:"{kn}", Key_Value:"{kv}"'.format(kn=i, kv=inventory_things[i]))
Ответ 5
Я написал эту функцию для печати простых словарей:
def dictToString(dict):
return str(dict).replace(', ','\r\n').replace("u'","").replace("'","")[1:-1]