#python
#python
Вопрос:
У меня было задание взять текстовый файл и выяснить, кто отправил больше всего электронных писем. Я получил правильный ответ, но TA сказал, что мне нужно составить список, потому что у меня был ненужный цикл for
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
email_dict = dict()
email_list = list()
for lines in handle:
lines = lines.strip()
if not lines.startswith('From '): continue
from_lines = lines.split()
email_list = [from_lines[1]]
for email in email_list:
email_dict[email] = email_dict.get(email,0) 1
prolific_committer = None
bigcount = None
for email, count in email_dict.items():
if prolific_committer is None or count > bigcount:
prolific_committer = email
bigcount = count
print(prolific_committer,bigcount)
Как я мог бы это исправить, но, что более важно, почему? Я все еще учусь и понимаю многие концепции самостоятельно. Я изо всех сил пытаюсь собрать все это вместе.
Комментарии:
1. Спецификация не ясна. Каким должен быть входной файл и ожидаемый результат?
2.
email_list
имеет только один элемент, поэтому этот «цикл» выполняется только один раз для этого одного элемента. Зачем писать цикл?3. Извините, входной файл представляет собой текстовый файл с кучей случайных сообщений электронной почты. Мне нужно было извлечь все отправленные мне электронные письма и посмотреть, кто отправил больше всего электронных писем. Ответ был «адрес электронной почты пользователя 5», вот где я столкнулся с проблемой. Я не мог заставить его работать без использования списка. До этого это была просто куча строк, и я не знал, как вставить строки в словарь.
Ответ №1:
Исправлено
name = input("Enter file:")
if len(name) < 1 : name = "mbox-short.txt"
handle = open(name)
email_dict = dict()
email_list = list()
for lines in handle:
lines = lines.strip()
if not lines.startswith('From '): continue
from_lines = lines.split()
from_lines = from_lines[1]
email_dict[from_lines] = email_dict.get(from_lines,0) 1
prolific_committer = None
bigcount = None
for email, count in email_dict.items():
if prolific_committer is None or count > bigcount:
prolific_committer = email
bigcount = count
print(prolific_committer,bigcount)