7.9 Лаборатория: сортировка телешоу (словари и списки)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 7.9 Лаборатория: сортировка телешоу (словари и списки)

Сообщение Anonymous »

Я застрял в этой проблеме уже несколько часов, и я нахожусь в тупике. Сначала считывает имя входного файла, а затем считывает входной файл с помощью метода file.readlines () . Входной файл содержит несортированный список количества сезонов, за которым следует соответствующее телешоу. Ваша программа должна поместить содержимое входного файла в словарь, где количество сезонов представляет собой ключи, а список телевизионных шоу - это значения (поскольку множественные шоу могут иметь одинаковое количество сезонов).
Сортировать словарь по ключу (наименьший до наибольшего) и выводит результаты в файл с именем output_keys.txt , разделяя несколько телевизионных шоу, связанных с одним и тем же ключом с полуколоном (;). Затем сортируйте словарь по значениям (алфавитный порядок) и выведите результаты в файл с именем output_titles.txt .
ex: если вход:
file1.txt
и содержимое файла1.txt:
20
Gunsmoke
30
The Simpsons
10
Will & Grace
14
Dallas
20
Law & Order
12
Murder, She Wrote

file output_keys.txt должен содержать:
10: Will & Grace
12: Murder, She Wrote
14: Dallas
20: Gunsmoke; Law & Order
30: The Simpsons

и файл output_titles.txt должен содержать:
Dallas
Gunsmoke
Law & Order
Murder, She Wrote
The Simpsons
Will & Grace

Примечание: в конце каждого выходного файла есть новый линий, и File1.txt доступен для загрузки.
Проблема
Проблема, с которой я сталкиваюсь, заключается в том, что я могу получить файл1.txt для загрузки, но при добавлении file2.txt я получаю ошибки повсюду Место. > попытка решения < /h2>
def read_file(file1):
"""
Reads the input file and parses it into a dictionary
with seasons as keys and lists of TV shows as values.
"""
dict1 = {}
try:
with open(file1, 'r') as f:
file_lines = f.readlines()

for i in range(0, len(file_lines) - 1, 2):
if file_lines.strip() == '':
continue

# Parse season and shows
season = int(file_lines.strip())
show = file_lines[i + 1].strip()

# Append to dictionary
if season in dict1:
dict1[season].append(show)
else:
dict1[season] = [show]

print(f"Parsed: Season {season}, Show '{show}'")
except FileNotFoundError:
print(f"Error: File '{file1}' not found.")
return None
except ValueError as e:
print(f"Error while reading the file: {e}")
return None

return dict1

def output_keys(output_file, dict1):
"""
Writes the dictionary to a file sorted by season numbers.
"""
try:
with open(output_file, 'w') as q:
for key in sorted(dict1.keys()):
shows = '; '.join(sorted(dict1[key]))
q.write(f"{key}: {shows}\n")
print(f"{key}: {shows}")
except Exception as e:
print(f"Error writing to file '{output_file}': {e}")

def output_titles(output_file, dict1):
"""
Writes all TV shows in alphabetical order to a file.
"""
try:
titles = []
for shows in dict1.values():
titles.extend(shows)

with open(output_file, 'w') as o:
for title in sorted(titles):
o.write(f"{title}\n")
print(title)
except Exception as e:
print(f"Error writing to file '{output_file}': {e}")

def main(file1):
"""
Main function to read input file, process data, and generate outputs.
"""
dict1 = read_file(file1)
if dict1 is None:
print(f"Error: Invalid file name or processing issue: {file1}")
return

# Output files
output_filename_keys = 'output_keys.txt'
output_filename_titles = 'output_titles.txt'

# Write outputs
output_keys(output_filename_keys, dict1)
output_titles(output_filename_titles, dict1)

# Get input file from user
if __name__ == "__main__":
file_name = input()
main(file_name)


Подробнее здесь: https://stackoverflow.com/questions/794 ... -and-lists
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Лабораторная работа: Сортировка телешоу (словари и списки)
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Лабораторная работа: Сортировка телепередач (словари и списки)
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Лабораторная работа: Сортировка телепередач (словари и списки)
    Гость » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Гость
  • Рекурсивно распечатать все атрибуты, списки, словари и т. д. объекта в Python.
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Итерация над JSON, содержащим списки словари в Python
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»