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. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x