Faster way to group email-date pairs by date without many nested for loops?
A good function will should accept the data as a parameter and return the resulting data structure.  Call print(emails_by_date(email_date_table)) to put it all together.

Two Pythonic techniques you want to use are:


dict.setdefault(key[, default]), which gets rid of the need for if, as well as the requirement for the input to be grouped chronologically
Multiple assignment in the for-loop, which removes the ugly [0] and [1] indexing:


  If the target list is a comma-separated list of targets: The object must be an iterable with the same number of items as there are targets in the target list, and the items are assigned, from left to right, to the corresponding targets.
  
  The function could be written as:


def emails_by_date(pairs):
    ret = {}
    for email, date in pairs:
        ret.setdefault(date, []).append(email)
    return ret