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

Помогите пожалуйста с задачей на Python

Дарья Бынеева Ученик (199), открыт 1 неделю назад
Сортировки. Структуры. Задача 8

В текстовом файле содержатся записи о поставках товаров. Для каждой поставки указано наименование поставленного товара, фирма-производитель и количество. Необходимо вывести первые 10
поставок списка, полученного в результате сортировки исходного списка по наименованию товара (при совпадении наименований поставки сортируются по количеству товара в порядке невозрастания, при совпадении наименования и количества сохраняется исходный порядок) и исключения из списка поставок товаров фирмы, указанной в последней строке файла.

Формат входных данных
В первой строке входного файла указано число N
— количество поставок. Каждая из следующих N
строк состоит из наименования товара, наименования фирмы-производителя и количества товара в поставке, разделённых пробелом. В последней строке записано наименование фирмы, поставки которой исключены из рассмотрения.

Формат выходных данных
Выведите в выходной файл 10
или менее строк с описанием поставок, формат аналогичен формату входного файла.

Примеры:
Вход
5
tovar1 firma1 10
tovar2 firma1 20
tovar1 firma3 5
tovar1 firma2 30
tovar3 firma3 50
firma3
Выход
tovar1 firma2 30
tovar1 firma1 10
tovar2 firma1 20
Вход
3
trava miloworld 99
trava shilocorp 99
drova sweetrama 7
contoraltd
Выход
drova sweetrama 7
trava miloworld 99
trava shilocorp 99
Дополнен 1 неделю назад
Нужно дописать код:

n = int(input())
data = []
for i in range(n):
tmp = input().split()
temp_dict = dict()
temp_dict["tovar"] = tmp[0]
temp_dict["firma"] = tmp[1]
temp_dict["colvo"] = int(tmp[2])
data.append(temp_dict)
print(*data)
firm = input()
data_new = []
for i in range(n):
if data[i]["firma"] != firm:
data_new.append(data[i])
print(*data_new)
sorted_data = sorted(data_new, key=lambda x: (x['tovar'], -x['colvo']))
print(*sorted_data)
1 ответ
Вертолётов 625 Мудрец (13288) 1 неделю назад
Код:
 # Чтение входных данных 
n = int(input())
data = []

# Считываем поставки в список словарей
for _ in range(n):
tmp = input().split()
temp_dict = {
"tovar": tmp[0],
"firma": tmp[1],
"colvo": int(tmp[2])
}
data.append(temp_dict)

# Считываем фирму для исключения
firm_to_exclude = input()

# Фильтруем данные, исключая поставки указанной фирмы
data_new = [item for item in data if item["firma"] != firm_to_exclude]

# Сортируем оставшиеся поставки: сначала по наименованию товара, затем по количеству в убывающем порядке
sorted_data = sorted(data_new, key=lambda x: (x['tovar'], -x['colvo']))

# Выводим первые 10 записей из отсортированного списка
for item in sorted_data[:10]:
print(item["tovar"], item["firma"], item["colvo"])
Похожие вопросы