So I'm trying to run a for loop on a dictionary containing regular expression objects in python but I'm getting the following error:
============ RESTART: C:/Users/JSurzyn/Scripts/pw_verify_neat.py ============
Enter a password >>>
Jordan93
Traceback (most recent call last):
  File "C:/Users/JSurzyn/Scripts/pw_verify_neat.py", line 18, in <module>
    for key, value in reg_dict:
TypeError: '_sre.SRE_Pattern' object is not iterable
Are regex objects not iterable? Any help would be great. I'm running python 3.6 on a Windows 10 64 bit machine.
For context. I'm trying to take the following code
import re
pw = str(input('Enter a password >>>\n' ))
length_regex = re.compile(r'.{8,}')
upper_regex = re.compile(r'[A-Z]')
lower_regex = re.compile(r'[a-z]')
num_regex = re.compile(r'[0-9]')
def t_pw(pw):
    try:
        mo = length_regex.search(pw)
        fo = mo.group()
        try:
            mo = upper_regex.search(pw)
            fo = mo.group()
            try:
                mo = lower_regex.search(pw)
                fo = mo.group()
                try:
                    mo = num_regex.search(pw)
                    fo = mo.group()
                    print('password approved')
                except:
                    print('password must have at least one numerical digit')
            except:
                print('password must have at least one lower case letter')
        except:
            print('password must have at least one upper case letter')
    except:
        print('password must be at least 8 characters.')
t_pw(pw)
And clean it up to look like:
import re
pw = str(input('Enter a password >>>\n' ))
length_regex = re.compile(r'.{8,}')
upper_regex = re.compile(r'[A-Z]')
lower_regex = re.compile(r'[a-z]')
num_regex = re.compile(r'[0-9]')
l_string = 'password must be at least 8 characters.'
u_string = 'password must have at least one upper case letter'
lo_string = 'password must have at least one lower case letter'
n_string = 'password must have at least one numerical digit'
reg_dict = {length_regex : l_string, upper_regex : u_string,
            lower_regex : lo_string, num_regex : n_string}
for key, value in reg_dict:
    try:
        mo = key.search(pw)
        fo = mo.group()
    except:
        print(value)
        exit()
print('Password approved')
