"""
Реализовать структуру данных «Товары». Она должна представлять собой список кортежей.
Каждый кортеж хранит информацию об отдельном товаре. В кортеже должно быть два элемента — номер
товара и словарь с параметрами (характеристиками товара: название, цена,
количество, единица измерения). Структуру нужно сформировать программно,
т.е. запрашивать все данные у пользователя.
Пример готовой структуры:
[
(1, {“название”: “компьютер”, “цена”: 20000, “количество”: 5, “eд”: “шт.”}),
(2, {“название”: “принтер”, “цена”: 6000, “количество”: 2, “eд”: “шт.”}),
(3, {“название”: “сканер”, “цена”: 2000, “количество”: 7, “eд”: “шт.”})
]
Необходимо собрать аналитику о товарах. Реализовать словарь, в котором каждый
ключ — характеристика товара, например название, а значение — список значений-характеристик,
например список названий товаров.
Пример:
{
“название”: [“компьютер”, “принтер”, “сканер”],
“цена”: [20000, 6000, 2000],
“количество”: [5, 2, 7],
“ед”: [“шт.”]
}
"""

# тут должно быть множество условий на проверку кореектности ввода
# допустим у нас сверх внимательные и аккуратные пользователи
from collections import defaultdict


TEST_GOODS = [
            (1, {"название": "компьютер", "цена": 20000, "количество": 5, "eд": "шт."}),
            (2, {"название": "принтер", "цена": 6000, "количество": 2, "eд": "шт."}),
            (3, {"название": "сканер", "цена": 2000, "количество": 7, "eд": "шт."})]


goods = []

# """

while True:

    number = int(input("Введите номер товара:\n>>> "))
    for i in goods:
        if number in i:
            print("Совпадение, номер товара должен быть уникален")
            break
    else:
        name = input("Введите название товара:\n>>> ")
        price = int(input("Введите цену товара:\n>>> "))
        count = int(input("Введите количество товара:\n>>> "))
        unit = input("Введите единицу измерения товара:\n>>> ")

        goods.append((number, {"название": name, "цена": price, "количество": count, "ед.": unit}))

        while True:
            check = input("продолжаем?(Д/н)\n").lower()
            if check == "н" or check == "д" or \
                    check == "y" or check == "l":
                break
            else:
                print("некорректный ввод, введите или букву 'д' или 'н'(без кавычек) ")
        if check == "н" or check == "y":
            break

[print(i) for i in goods]
print("_" * 50)
# """
goods_report = defaultdict(list)

for i in goods:
    for key, val in i[1].items():
        goods_report[key].append(val)

# последняя часть не очень понятна, должны быть списки
# но без дублирования, или дублирования не должно быть
# только в единицах измерения.

goods_report = {i: list(set(goods_report[i])) for i in goods_report}

for i in goods_report:
    print(f"{i}: {goods_report[i]}")
