Как заполнить мой словарь без списка?

#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)