Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как убрать из вывода { }?

Афанасий Фет Ученик (108), на голосовании 1 неделю назад
 def create_order(count): 
order_list = []
order_dict = dict()
for _ in range(count):
order = input('Введите имя и заказ, разделенные пробелами: ').split(' ')
order_list.append(order)

for i_order in order_list:
name, zakaz, count = i_order[0], i_order[1], int(i_order[2])
if name not in order_dict:
order_dict.setdefault(name, dict()).setdefault(zakaz, count)
else:
if zakaz in order_dict[name]:
order_dict[name][zakaz] += count
else:
order_dict[name].setdefault(zakaz, count)
return order_dict


count_order = int(input('Введите количество заказов: '))
orders_dict = create_order(count_order)
for key, value in orders_dict.items():
print('\n{key}: \n\t{value}'.format(
key=key,
value=value
))
Есть такой код, который ведет счет заказов(не суть). Если такой у кого то из уже есть, то добавляет количество.
Использовал словарь заполненный словарем. Словарь/имя/заказы по имени: количество

Но в конце в блоке вывода выходят { } принадлежащие внутреннему словарю.
 Введите количество заказов: 4 
Введите имя и заказ, разделенные пробелами: Иванов Мексиканская 2
Введите имя и заказ, разделенные пробелами: Иванов Пепперони 2
Введите имя и заказ, разделенные пробелами: Петров Интересная 5
Введите имя и заказ, разделенные пробелами: Петров Интересная 5

Иванов:
{'Мексиканская': 2, 'Пепперони': 2}

Петров:
{'Интересная': 10}
Ну и собственно вопрос состоит в том, что, как убрать { } из вывода?

Знаю что вопрос глупый, но не понимаю как это исправить.

Заранее большое спасибо!
Дополнен 1 месяц назад
Дополню своим вариантом. Мб пройтись еще одним циклом по значению value?
Голосование за лучший ответ
Улик Додиков Искусственный Интеллект (109826) 1 месяц назад
Чтобы избавиться от скобок `{}`, пройдемся по каждому элементу внутреннего словаря и отформатируем вывод:
 for key, value in orders_dict.items():  
print(f'\n{key}:')
for zakaz, count in value.items():
print(f'\t{zakaz}: {count}')


Таким образом, мы выводим каждый заказ и его количество построчно, избегая непосредственного отображения словаря со скобками.
Афанасий ФетУченик (108) 1 месяц назад
Вот да) как раз думал насчет этого же)))

Спасибо большое!
Улик Додиков Искусственный Интеллект (109826) Афанасий Фет, ?
Schwarzer Regen Мыслитель (6026) 1 месяц назад
Проблема в том, что переменная value - это словарь, и при выводе на печать она заключена в фигурные скобки {}. Чтобы убрать фигурные скобки, можно использовать метод .items() для перебора пар ключ-значение в словаре и вывести их в более удобном для чтения формате.

Вот код:
for key, value in orders_dict.items():
print('\n{}:'.format(key))
for zakaz, count in value.items():
print('\t{}: {}'.format(zakaz, count))

Это выведет каждый заказ в более удобном для чтения формате, без фигурных скобок:

Имя:
Zakaz1: 2
Zakaz2: 3

Другое имя:
Zakaz3: 1
Zakaz4: 4

В качестве альтернативы вы можете использовать модуль pprint для красивой печати словаря в более удобном для чтения формате:

import pprint

for key, value in orders_dict.items():
print('\n{}:'.format(key))
pprint.pprint(value)

Это также удалит фигурные скобки и выведет словарь в более удобном для чтения формате.
Афанасий ФетУченик (108) 1 месяц назад
Да, понимаю что словарь)
Спасибо за такой развернутый ответ)

Как раз таким вариантом действий дополнял свой ответ)

А за pprint огромное спасибо! Не знал об этой библиотеке. Даже ни разу не попадалась на глаза
Похожие вопросы