Python
Как вывести словарь без скобок в Python: пары ключ-значение, строки и форматирование
Чтобы вывести словарь без фигурных скобок в Python, не печатайте весь словарь через print(data). Вместо этого пройдитесь по парам key, value через data.items() и выведите данные в нужном формате
Когда вы пишете print(dictionary), Python показывает техническое представление словаря: с фигурными скобками, кавычками и двоеточиями. Это удобно для отладки, но не всегда подходит для вывода пользователю
Проблема: обычный print показывает словарь как dict
Допустим, есть словарь
user = {
"name": "Анна",
"age": 24,
"city": "Казань"
}
print(user)
Вывод будет таким
{'name': 'Анна', 'age': 24, 'city': 'Казань'}
Для разработчика это понятно, но для пользователя выглядит как внутренности программы. Если нужен аккуратный текст, формат вывода нужно собрать самостоятельно
Самый простой способ: цикл по items()
user = {
"name": "Анна",
"age": 24,
"city": "Казань"
}
for key, value in user.items():
print(key, value)
Результат
name Анна
age 24
city Казань
items() возвращает пары ключ-значение. В цикле мы сами решаем, как показать каждую пару
Вывод с двоеточием
Обычно удобнее выводить так
for key, value in user.items():
print(f"{key}: {value}")
Результат
name: Анна
age: 24
city: Казань
Фигурных скобок уже нет, потому что мы не печатаем словарь целиком. Мы печатаем каждую пару отдельно
Красивые русские подписи вместо ключей
Если ключи в словаре технические, можно сделать отдельный словарь подписей
user = {
"name": "Анна",
"age": 24,
"city": "Казань"
}
labels = {
"name": "Имя",
"age": "Возраст",
"city": "Город"
}
for key, value in user.items():
label = labels.get(key, key)
print(f"{label}: {value}")
Результат
Имя: Анна
Возраст: 24
Город: Казань
Такой способ полезен, если данные внутри программы называются по-английски, а пользователю нужно показать понятный русский вывод
Вывести словарь в одну строку без скобок
Если нужен вывод в одну строку, используйте join()
user = {
"name": "Анна",
"age": 24,
"city": "Казань"
}
text = ", ".join(f"{key}: {value}" for key, value in user.items())
print(text)
Результат
name: Анна, age: 24, city: Казань
Здесь генератор создает строки для каждой пары, а join() соединяет их через запятую и пробел
Вывести только значения словаря
Если ключи не нужны, можно пройти по values()
user = {
"name": "Анна",
"age": 24,
"city": "Казань"
}
for value in user.values():
print(value)
Результат
Анна
24
Казань
В одну строку
text = ", ".join(str(value) for value in user.values())
print(text)
str(value) нужен, потому что в словаре могут быть числа, а join() умеет соединять только строки
Вывести только ключи словаря
for key in user.keys():
print(key)
Или короче
for key in user:
print(key)
При переборе словаря напрямую Python идет по ключам
Что делать со вложенным словарем
Если внутри словаря есть другой словарь, простой вывод может снова показать фигурные скобки
user = {
"name": "Анна",
"contacts": {
"email": "anna@example.com",
"telegram": "@anna"
}
}
for key, value in user.items():
print(f"{key}: {value}")
Для вложенных данных лучше написать отдельную функцию
def print_dict(data, indent=0):
spaces = " " * indent
for key, value in data.items():
if isinstance(value, dict):
print(f"{spaces}{key}:")
print_dict(value, indent + 2)
else:
print(f"{spaces}{key}: {value}")
print_dict(user)
Результат
name: Анна
contacts:
email: anna@example.com
telegram: @anna
Такой подход уже похож на простой форматированный отчет
Если нужен JSON без Python-кавычек
Иногда человек хочет «без скобок», но на самом деле ему нужен не пользовательский текст, а нормальный формат данных. Тогда можно использовать JSON
import json
user = {
"name": "Анна",
"age": 24,
"city": "Казань"
}
print(json.dumps(user, ensure_ascii=False, indent=2))
Результат будет с фигурными скобками, но уже в формате JSON, а не в техническом Python-представлении
Если же скобки точно не нужны, используйте items() и форматирование строк
Мини-практика
Возьмите словарь товара и выведите его как карточку
product = {
"title": "Клавиатура",
"price": 3500,
"in_stock": True
}
for key, value in product.items():
print(f"{key}: {value}")
После этого добавьте словарь подписей, чтобы вместо title, price, in_stock выводились Название, Цена, В наличии
Частые ошибки
Печатать словарь целиком и пытаться убрать символы replace
Можно сделать replace("{", ""), но это хрупко. Лучше сразу формировать нормальный вывод через цикл
Забывать str() в join()
Если значения не строки, join() выдаст ошибку. Преобразуйте значения через str(value)
Путать keys, values и items
keys() дает ключи, values() дает значения, items() дает пары ключ-значение
Ожидать, что порядок всегда нужно сортировать
Современный Python сохраняет порядок добавления ключей в словарь. Если нужен алфавитный порядок, сортируйте ключи отдельно
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как в Python вывести через print название переменной и ее значение
- Как преобразовать число в строку Python: str, f-строки и форматирование
- Как использовать декораторы Python для логирования вызовов функций без изменения кода
- Как округлить число до сотых в Python: round, форматирование и Decimal